编写一段TCP通讯协议,实现两个客户端与服务器端轮流通讯
时间: 2024-01-27 11:03:49 浏览: 71
基于TCP协议的客户端和服务器间的通讯
以下是一段简单的TCP通讯协议,用于实现两个客户端与服务器端轮流通讯:
1. 客户端连接服务器端,向服务器端发送一条消息。
2. 服务器端接收到消息后,向所有已连接的客户端发送该消息,并等待下一个客户端发送消息。
3. 下一个客户端连接服务器端,向服务器端发送一条消息。
4. 服务器端接收到消息后,向所有已连接的客户端发送该消息,并等待下一个客户端发送消息。
5. 重复步骤3-4,直到所有客户端都断开连接。
以下是Python代码示例:
服务器端:
```python
import socket
HOST = '' # 监听所有可用的接口
PORT = 8888 # 监听指定的端口号
BUFFER_SIZE = 1024
# 创建TCP套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口号
s.bind((HOST, PORT))
# 设置最大连接数
s.listen(2)
print('Server is listening on port', PORT)
# 等待客户端连接
conn1, addr1 = s.accept()
print('Client 1 connected:', addr1)
conn2, addr2 = s.accept()
print('Client 2 connected:', addr2)
# 向客户端1发送欢迎消息
conn1.send('Welcome to the chat room!'.encode())
while True:
# 接收客户端1的消息
data = conn1.recv(BUFFER_SIZE)
if data:
# 将消息转发给客户端2
conn2.send(data)
# 等待客户端2的消息
data = conn2.recv(BUFFER_SIZE)
if data:
# 将消息转发给客户端1
conn1.send(data)
# 关闭连接
conn1.close()
conn2.close()
s.close()
```
客户端:
```python
import socket
HOST = 'localhost' # 服务器的主机名或IP地址
PORT = 8888 # 服务器指定的端口号
BUFFER_SIZE = 1024
# 创建TCP套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
s.connect((HOST, PORT))
while True:
# 接收服务器的消息
data = s.recv(BUFFER_SIZE)
if data:
print(data.decode())
# 发送消息给服务器
message = input()
s.send(message.encode())
# 关闭连接
s.close()
```
客户端可以启动两个,分别连接到服务器端,然后轮流发送消息即可。
阅读全文