import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
ip_port = ('127.0.0.1' , 8090)
mes_to_server = '你好,Linux公社服务器!'.encode('utf-8')#发送的数据必须是byte类型
sk.sendto(mes_to_server , ip_port)
ret , addr = sk.recvfrom(1024)
print(ret.decode('utf-8'))
sk.close()
如果需要不停收发消息,代码更改如下:
服务器端代码:
import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1' , 8090))
print('等待Linux公社linuxidc.com客户端发来消息……')
while True:
msg , addr = sk.recvfrom(1024) # 此处会阻塞
print('Linux公社收到{}发来的信息,内容是:{}'.format(addr , msg.decode('utf-8')))
mes_to_server = input('>>>').encode('utf-8')#发送的数据必须是byte类型
sk.sendto(mes_to_server,addr)
sk.close()
客户端代码:
import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
ip_port = ('127.0.0.1' , 8090)
while True:
mes_to_server = input('>>>').encode('utf-8')#发送的数据必须是byte类型
sk.sendto(mes_to_server , ip_port)
ret , addr = sk.recvfrom(1024)
print(ret.decode('utf-8'))
sk.close()
使用socket进行UDP协议下通信时,可以多个客户端与服务器通信,也就是说,上面客户端代码你可以另开一个进程与服务器通信,且不需要关闭当前客户端,这是TCP协议与UDP协议下socket通信的一个不同之处。
5、总结本篇初步总结了Python网络编程中socket模块的使用,事实上只是大致总结了基本函数的用法。
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx