基于TCP协议的简易聊天机器人代码要求两个客户端
时间: 2023-12-15 12:05:15 浏览: 96
一个简单的TCP聊天室客户端
好的,基于TCP协议的简易聊天机器人代码可以分为服务端和客户端两部分。以下是一个示例代码,可以实现两个客户端与服务端的简单聊天。
服务端代码:
```python
import socket
# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
server_socket.bind(('127.0.0.1', 9999))
# 监听端口,等待客户端连接
server_socket.listen(2)
print('Waiting for clients...')
# 接收客户端的连接请求
client1_socket, addr1 = server_socket.accept()
print('Client1 connected:', addr1)
client2_socket, addr2 = server_socket.accept()
print('Client2 connected:', addr2)
# 服务端循环接收客户端发送的消息,并将消息转发给另一个客户端
while True:
try:
# 接收客户端发送的消息
client1_msg = client1_socket.recv(1024).decode()
if not client1_msg:
break
print('Client1:', client1_msg)
# 将消息转发给另一个客户端
client2_socket.send(client1_msg.encode())
client2_msg = client2_socket.recv(1024).decode()
if not client2_msg:
break
print('Client2:', client2_msg)
client1_socket.send(client2_msg.encode())
except ConnectionResetError:
print('Client disconnected')
break
# 关闭连接
client1_socket.close()
client2_socket.close()
server_socket.close()
```
客户端代码:
```python
import socket
import threading
def recv_msg(client_socket):
# 循环接收服务器发送的消息并打印
while True:
try:
msg = client_socket.recv(1024).decode()
if not msg:
break
print(msg)
except ConnectionResetError:
print('Server disconnected')
break
# 关闭连接
client_socket.close()
# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect(('127.0.0.1', 9999))
# 创建一个线程用于接收服务器发送的消息
t = threading.Thread(target=recv_msg, args=(client_socket,))
t.start()
# 循环从命令行输入消息并发送给服务器
while True:
try:
msg = input()
client_socket.send(msg.encode())
except ConnectionResetError:
print('Server disconnected')
break
# 关闭连接
client_socket.close()
```
注意事项:
- 以上代码仅供参考,具体实现需要根据实际情况进行调整。
- 如果需要增加更多的客户端,可以在服务端代码中增加相应的连接和消息转发逻辑。
- 在客户端代码中,需要创建一个线程用于接收服务器发送的消息,否则程序会阻塞在recv方法上,无法输入消息。
阅读全文