首先运行server端,再运行client_1 和 client_2,一次实现一个多人聊天的简单的小功能,基于 udp 协议
因为没有建立连接,直接按照 ip 来发消息,所以是 udp 协议
import socket
# 指定多个客户端参数
socket_obj = socket.socket(type=socket.SOCK_DGRAM)
socket_obj.bind(('127.0.0.1', 8000))
"""
服务端只是绑定一个ip
msg 和 address 在循环内接受,每次产生不同的实例
全部都是由 sk 对象 recvfrom,sendto
tcp: recv send
udp: recvfrom sendto
"""
while 1:
# 没有建立连接,直接根据地址发送消息,所以是 udp
bytes_from_client, address = socket_obj.recvfrom(1024)
msg_from_client = bytes_from_client.decode('utf8')
print(msg_from_client)
client_name = msg_from_client.split('>')[0].strip('来自')
msg_to_client = input('给{}发消息>>>'.format(client_name))
socket_obj.sendto(msg_to_client.encode('utf8'), address)
import socket
socket_obj = socket.socket(type=socket.SOCK_DGRAM)
server_ip = ('127.0.0.1', 8000)
while 1:
msg_to_server = input('给服务端发消息>>>')
socket_obj.sendto('来自客户端 1 > {}'.format(msg_to_server).encode('utf8'), server_ip)
msg_from_server, address = socket_obj.recvfrom(1024)
print('msg_from_server:', msg_from_server.decode('utf8'))
if msg_from_server == 'q':
break
socket_obj.close()
import socket
socket_obj = socket.socket(type=socket.SOCK_DGRAM)
server_ip = ('127.0.0.1', 8000)
while 1:
msg_to_server = input('给服务端发消息>>>')
socket_obj.sendto('来自客户端 2 > {}'.format(msg_to_server).encode('utf8'), server_ip)
msg_from_server, address = socket_obj.recvfrom(1024)
print('msg_from_server:', msg_from_server.decode('utf8'))
if msg_from_server == 'q':
break
socket_obj.close()
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。