1.创建一个简单的TCP同步聊天程序: 要求: (1). 创建一个同步TCP服务器,监听一个端口并接收来自客户端的消息。 (3). 客户端可以连接到服务器,发送消息并接收服务器的响应。
时间: 2024-12-12 20:28:55 浏览: 5
创建一个简单的TCP同步聊天程序通常涉及到以下几个步骤:
1. **服务器端**:
- 使用套接字编程库(如Python的socket库,Java的ServerSocket类)创建一个TCP服务器。
- 设置服务器监听特定端口,例如12345,`server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)`
- `server.bind(('localhost', 12345))`
- `server.listen(1)`,允许一个客户端连接。
- 当有新连接时,使用`client, address = server.accept()`接受连接,并创建一个新的线程或进程处理这个连接,避免阻塞主线程。
- 接收客户端发送的消息,通常通过循环读取输入流,`data = client.recv(1024)`。
- 对收到的数据进行处理,然后回应给客户端。
2. **客户端**:
- 同样地,创建一个新的TCP客户端,`client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)`
- 连接到服务器的IP地址和端口号,`client.connect(('localhost', 12345))`
- 发送消息给服务器,例如`client.sendall('Hello Server!')`
- 接收服务器的响应,同样通过`response = client.recv(1024)`获取。
3. **同步处理**:
为了保持同步,服务器和客户端之间的通信通常需要来回确认,比如服务器在发送响应后等待一个应答信号,客户端在接收到响应后发送确认信息。
```python
# 示例代码片段(Python)
import socket
class ChatServer:
def __init__(self, port):
self.server = socket.socket()
self.server.bind(('localhost', port))
self.server.listen()
def handle_client(self, client_socket):
# 接收、处理、回应消息...
message = client_socket.recv(1024)
print(f"Received from client: {message}")
# ... 等待客户端应答
client_socket.send("Server response")
if __name__ == "__main__":
server = ChatServer(12345)
while True:
client, addr = server.server.accept()
print(f"Connected by: {addr}")
server_thread = threading.Thread(target=server.handle_client, args=(client,))
server_thread.start()
# 示例代码片段(客户端,Python):
def send_message():
client = socket.socket()
client.connect(('localhost', 12345))
client.send("Client sending a message")
response = client.recv(1024)
print(f"Response from server: {response}")
send_message()
```
阅读全文