使用UDP协议多个客户端依靠服务器进行聊天
- 思路 : 当服务器接收到某个客户端的信息后再转发给所有客户端
服务器代码:
import socket
def server():
# 创建套接字,使用IPV4地址,使用UDP协议
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 绑定地址
server.bind(('127.0.0.1',12345))
#创建一个接收客户端地址的列表
clientlist = []
# 服务器不断循环
while True:
# 接收客户端消息,并获得客户端的套接字地址
data,con = server.recvfrom(1024)
text = '{0} say : {1}'.format(con,data.decode())
# 将客户端的地址添加到列表中
if con not in clientlist:
clientlist.append(con)
# 将接收到的消息发送到所有客户端
for i in clientlist:
server.sendto(text.encode(),i)
if __name__ == '__main__':
server()
客户端代码
import socket
def client():
# 建立客户端套接字
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 循环消息
while True:
str = input('please input word:')
data = str.encode()
# 发送输入消息给服务器
client.sendto(data,('127.0.0.1',12345))
# 接收服务器发送的消息
data, con = client.recvfrom(1024)
print(data.decode())
if __name__ == '__main__':
client()
- 缺点: 此程序只能在客户端输入消息后才能接收服务器端返回的消息