python编写的tcp,udp实例

三. TCP通信实例
1.服务器 tcpSerSock.py
        核心操作如下:
        ss = socket()                # 创建服务器套接字
        ss.bind()                   # 地址绑定到套接字上
        ss.listen()                      # 监听连接
             inf_loop:                       # 服务器无限循环
                  cs = ss.accept()       # 接受客户端连接 阻塞式:程序连接之前处于挂起状态
             comm_loop:                 # 通信循环
                  cs.recv()/cs.send()   # 对话 接受与发送数据
             cs.close()                      # 关闭客户端套接字 
             ss.close()                      # 关闭服务器套接字 (可选)




[python] view plaincopy 
# -*- coding: utf-8 -*-   
from socket import *  
from time import ctime  
  
HOST = 'localhost'          #主机名  
PORT =  21567               #端口号  
BUFSIZE = 1024              #缓冲区大小1K  
ADDR = (HOST,PORT)  
  
tcpSerSock = socket(AF_INET, SOCK_STREAM)  
tcpSerSock.bind(ADDR)       #绑定地址到套接字  
tcpSerSock.listen(5)        #监听 最多同时5个连接进来  
  
while True:                 #无限循环等待连接到来  
    try:  
        print 'Waiting for connection ....'  
        tcpCliSock, addr = tcpSerSock.accept()  #被动接受客户端连接  
        print u'Connected client from : ', addr  
  
        while True:  
            data = tcpCliSock.recv(BUFSIZE)     #接受数据  
            if not data:  
                break  
            else:  
                print 'Client: ',data  
            tcpCliSock.send('[%s] %s' %(ctime(),data)) #时间戳  
  
    except Exception,e:  
        print 'Error: ',e  
tcpSerSock.close()          #关闭服务器  






2.客户端 tcpCliSock.py
        核心操作如下:
        cs = socket()                 # 创建客户端套接字
             cs.connect()                  # 尝试连接服务器
             comm_loop:                 # 通讯循环
                  cs.send()/cs.recv()    # 对话 发送接受数据
             cs.close()                       # 关闭客户端套接字
[python] view plaincopy 
# -*- coding: utf-8 -*-   
from socket import *  
  
HOST = 'localhost'          #主机名  
PORT =  21567               #端口号 与服务器一致  
BUFSIZE = 1024              #缓冲区大小1K  
ADDR = (HOST,PORT)  
  
tcpCliSock = socket(AF_INET, SOCK_STREAM)  
tcpCliSock.connect(ADDR)    #连接服务器  
  
while True:                 #无限循环等待连接到来  
    try:  
        data = raw_input('>')  
        if not data:  
            break  
        tcpCliSock.send(data)            #发送数据  
        data = tcpCliSock.recv(BUFSIZE)  #接受数据  
        if not data:  
            break  
        print 'Server: ', data  
    except Exception,e:  
        print 'Error: ',e  
          
tcpCliSock.close()          #关闭客户端  














UDP通信


1.服务器 udpSerSock.py
        核心操作如下:
        ss = socket()                # 创建服务器套接字
        ss.bind()                   # 绑定服务器套接字
             inf_loop:                       # 服务器无限循环
                  cs = ss.recvfrom()/ss.sendto()         
                                                  # 对话 接受与发送数据
             ss.close()                      # 关闭服务器套接字 


[python] view plaincopy 
# -*- coding: utf-8 -*-   
from socket import *  
from time import ctime  
  
HOST = ''                   #主机名  
PORT =  21567               #端口号  
BUFSIZE = 1024              #缓冲区大小1K  
ADDR = (HOST,PORT)  
  
udpSerSock = socket(AF_INET, SOCK_DGRAM)  
udpSerSock.bind(ADDR)       #绑定地址到套接字  
  
while True:                 #无限循环等待连接到来  
    try:  
        print 'Waiting for message ....'  
        data, addr = udpSerSock.recvfrom(BUFSIZE)          #接受UDP  
        print 'Get client msg is: ', data  
        udpSerSock.sendto('[%s] %s' %(ctime(),data), addr) #发送UDP  
        print 'Received from and returned to: ',addr  
  
    except Exception,e:  
        print 'Error: ',e  
udpSerSock.close()          #关闭服务器  




2.客户端 udpCliSock.py
        核心操作如下:
        cs = socket()                            # 创建客户端套接字
             inf_loop:                                  # 服务器无限循环
                  cs.sendto()/cs.recvfrom()   # 对话 接受与发送数据                                                
             cs.close()                                 # 关闭客户端套接字 
[python] view plaincopy 
# -*- coding: utf-8 -*-   
from socket import *  
  
HOST = 'localhost'          #主机名  
PORT =  21567               #端口号 与服务器一致  
BUFSIZE = 1024              #缓冲区大小1K  
ADDR = (HOST,PORT)  
  
udpCliSock = socket(AF_INET, SOCK_DGRAM)  
  
while True:                 #无限循环等待连接到来  
    try:  
        data = raw_input('>')  
        if not data:  
            break  
        udpCliSock.sendto(data, ADDR)            #发送数据  
        data,ADDR = udpCliSock.recvfrom(BUFSIZE)  #接受数据  
        if not data:  
            break  
        print 'Server : ', data  
  
    except Exception,e:  
        print 'Error: ',e  
          
udpCliSock.close()          #关闭客户端  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值