udp及tcp通信程序的设计与实现

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()

该代码实现的流程图
TCP连接
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实现的流程图

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值