前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >day31 - socket使用,基于 UDP

day31 - socket使用,基于 UDP

原创
作者头像
少年包青菜
修改2020-12-14 11:44:08
2040
修改2020-12-14 11:44:08
举报
文章被收录于专栏:Python 学习Python 学习

首先运行server端,再运行client_1 和 client_2,一次实现一个多人聊天的简单的小功能,基于 udp 协议

因为没有建立连接,直接按照 ip 来发消息,所以是 udp 协议

server端.py

代码语言:javascript
复制
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)

client_1.py

代码语言:javascript
复制
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()

client_2.py

代码语言:javascript
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • server端.py
  • client_1.py
  • client_2.py
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档