python 使用TCP和UDP通信实现:服务端在监听时显示“port ? ? ? is listening……”客户端向服务端发送“我的名字是XXX,我的学号是XXX”时,服务端返回“你好,欢迎来到常州信息!"
时间: 2024-03-01 13:49:39 浏览: 109
好的,我可以为您提供这个功能。以下是使用 Python 实现的 TCP 和 UDP 通信的服务端和客户端代码。
TCP 服务端代码:
```
import socket
HOST = 'localhost' # 主机名
PORT = 8888 # 端口号
# 创建 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
print(f'port {PORT} is listening...')
while True:
# 等待客户端连接
conn, addr = s.accept()
print(f'Connected by {addr}')
# 接收客户端发送的数据
data = conn.recv(1024).decode('utf-8')
name, id = data.split(',')
# 发送欢迎消息
message = f'你好,{name},欢迎来到常州信息!'
conn.sendall(message.encode('utf-8'))
# 关闭连接
conn.close()
```
TCP 客户端代码:
```
import socket
HOST = 'localhost' # 主机名
PORT = 8888 # 端口号
# 创建 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
# 发送数据
name = 'XXX'
id = 'XXX'
message = f'我的名字是{name},我的学号是{id}'
s.sendall(message.encode('utf-8'))
# 接收服务端返回的消息
data = s.recv(1024).decode('utf-8')
print(data)
# 关闭连接
s.close()
```
UDP 服务端代码:
```
import socket
HOST = 'localhost' # 主机名
PORT = 8888 # 端口号
# 创建 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((HOST, PORT))
print(f'port {PORT} is listening...')
while True:
# 接收客户端发送的数据
data, addr = s.recvfrom(1024)
name, id = data.decode('utf-8').split(',')
# 发送欢迎消息
message = f'你好,{name},欢迎来到常州信息!'
s.sendto(message.encode('utf-8'), addr)
```
UDP 客户端代码:
```
import socket
HOST = 'localhost' # 主机名
PORT = 8888 # 端口号
# 创建 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 发送数据
name = 'XXX'
id = 'XXX'
message = f'我的名字是{name},我的学号是{id}'
s.sendto(message.encode('utf-8'), (HOST, PORT))
# 接收服务端返回的消息
data, addr = s.recvfrom(1024)
print(data.decode('utf-8'))
# 关闭连接
s.close()
```
请注意,为了保证代码的安全性,我没有在代码中直接使用您提供的名字和学号,而是使用了占位符。您需要将代码中的“XXX”替换为您的名字和学号。
阅读全文