利用UDP通信方式实现局域网内,双方聊天,比如发送方发出一本书的名字,接收方回发书籍的作者,出版社,出版日期等信息
时间: 2024-03-06 12:51:39 浏览: 83
基于UDP的聊天工具,适用局域网+公网。
好的,利用UDP通信方式实现局域网内的双方聊天,可以按照以下步骤实现:
1. 发送方输入书籍的名字并发送给接收方。
2. 接收方收到消息后,利用书籍名字去查询作者、出版社、出版日期等信息。
3. 接收方将查询到的信息打包成一个数据包,并发送给发送方。
4. 发送方收到数据包后,解包并显示查询到的信息。
以下是该程序的示例代码:
发送方代码:
```python
import socket
# 创建UDP socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 目标主机的IP和端口号
dest_ip = '192.168.0.2'
dest_port = 8888
while True:
# 输入书籍名称
book_name = input('请输入书籍名称:')
# 发送书籍名称
udp_socket.sendto(book_name.encode('utf-8'), (dest_ip, dest_port))
# 接收查询结果
data, addr = udp_socket.recvfrom(1024)
author, publisher, publish_date = data.decode('utf-8').split(',')
# 输出查询结果
print(f'作者:{author},出版社:{publisher},出版日期:{publish_date}')
```
接收方代码:
```python
import socket
# 创建UDP socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定本地IP和端口号
local_ip = '192.168.0.2'
local_port = 8888
udp_socket.bind((local_ip, local_port))
while True:
# 接收书籍名称
data, addr = udp_socket.recvfrom(1024)
book_name = data.decode('utf-8')
# 查询书籍信息
author = '张三'
publisher = '出版社A'
publish_date = '2021-01-01'
# 打包并发送查询结果
query_result = f'{author},{publisher},{publish_date}'
udp_socket.sendto(query_result.encode('utf-8'), addr)
```
这样,发送方输入书籍名称后,接收方就会查询到相关信息并返回结果,发送方再将结果显示出来。两个程序可以在不同的计算机上运行,只需要将IP地址和端口号改成对应的值即可。
阅读全文