(3)编写程序使服务器端和客户端可以相互收发消息。收发的消息均要输出到控制台窗口。
时间: 2024-05-12 12:15:33 浏览: 7
以下是一个简单的 Python 实现,使用了 socket 和 threading 模块:
服务端代码:
```python
import socket
import threading
def handle_client(client_socket, address):
while True:
# 接收来自客户端的消息
message = client_socket.recv(1024).decode()
if not message:
break
print(f"[{address[0]}:{address[1]}] {message}")
# 发送消息给客户端
client_socket.send(message.encode())
client_socket.close()
def start_server():
host = '127.0.0.1'
port = 8888
# 创建 TCP 套接字并绑定到指定的地址和端口
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((host, port))
# 开始监听客户端连接请求
server_socket.listen(5)
print(f"Server listening on {host}:{port}")
while True:
# 接受客户端连接请求
client_socket, address = server_socket.accept()
print(f"Received connection from {address[0]}:{address[1]}")
# 创建一个新线程来处理客户端请求
client_thread = threading.Thread(target=handle_client, args=(client_socket, address))
client_thread.start()
if __name__ == '__main__':
start_server()
```
客户端代码:
```python
import socket
def start_client():
host = '127.0.0.1'
port = 8888
# 创建 TCP 套接字并连接到服务器
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((host, port))
while True:
# 从标准输入读取用户输入的消息
message = input("Enter message: ")
# 发送消息给服务器
client_socket.send(message.encode())
# 接收服务器的响应消息
response = client_socket.recv(1024).decode()
print(f"Received response: {response}")
if __name__ == '__main__':
start_client()
```
以上代码只是一个简单的实现,还有很多需要改进的地方。例如,需要处理异常情况以提高代码的稳定性,还可以添加用户验证等功能。