udp及tcp通信程序的设计与实现 (Python)
TCP实现代码
Server 端
from socket import *
SERVERIP = '127.0.0.1'
SERVERPORT = 6666
BUFSIZE = 1024
ADDRSERVER = (SERVERIP, SERVERPORT)
#AF_INET代表TCP/IP协议,SOCKET类型,协议类型
SockListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
SockListen.bind(ADDRSERVER)
SockListen.listen(1)
#阻塞,等待客户连接
print('服务器启动成功,等待客户端连接...')
SockTX, addrClient = SockListen.accept()
print('接受这个客户端连接',addrClient)
#SockTX.send('hello,服务器欢迎你')
SockTX.send(bytes('hello,服务器欢迎你', encoding="utf8"))
print('成功向客户端发送信息\n')
RecvBuf= SockTX.recv(BUFSIZE)
print('收到客户端发来的信息如下:\n',str(RecvBuf, encoding="utf8"))
SockListen.close()
SockTX.close()
Client 端
from socket import *
SERVERIP = '127.0.0.1' # or 'localhost'
SERVERPORT = 6666
BUFSIZE = 1024
SERVERADDR = (SERVERIP, SERVERPORT)
SockClient = socket(AF_INET, SOCK_STREAM,IPPROTO_TCP)
#连接服务器
SockClient.connect(SERVERADDR)
print('连接服务器成功')
clientip, clientport = SockClient.getsockname();
print('本地地址为',clientip,':',clientport,'\n')
RecvBuf = SockClient.recv(BUFSIZE)
print('收到服务器发来的信息如下:\n',str(RecvBuf, encoding="utf8"))
SockClient.send(bytes('I am 客户端', encoding="utf8"))
print('\n向服务器发送信息成功')
SockClient.close()
该代码实现的流程图
UDP实现代码
无连接
Server 端
from socket import *
SERVERIP = '127.0.0.1'
SERVERPORT = 9997
BUFSIZE = 1024
ADDRSERVER = (SERVERIP, SERVERPORT)
UdpSocket = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)
UdpSocket.bind(ADDRSERVER)
print('Bind UDP on ',SERVERPORT)
while True:
# 接收数据:
data, addr = UdpSocket.recvfrom(BUFSIZE)
print('Received from %s:%s.' % addr)
UdpSocket.sendto(b'Hello, %s!' % data, addr)
UdpSocket.close()
Client 端
from socket import *
SERVERIP = '127.0.0.1'
SERVERPORT = 9997
BUFSIZE = 1024
ADDRSERVER = (SERVERIP, SERVERPORT)
UdpSocket = socket(AF_INET,SOCK_DGRAM)
for data in [b'Michael', b' Tom', b'Sarah']:
# 发送数据:
UdpSocket.sendto(data, (SERVERIP, SERVERPORT))
# 接收数据:
print(UdpSocket.recv(BUFSIZE).decode('utf-8'))
UdpSocket.close()
UDP实现的流程图