使用socket写一个客户端与服务器c
时间: 2024-02-06 18:09:53 浏览: 118
以下是一个简单的示例,展示了如何使用 Python 的 socket 模块实现客户端和服务器端之间的通信。
首先,我们需要创建一个服务器端的 Python 脚本。在这个脚本中,我们将使用 socket 模块创建一个 TCP/IP 套接字,并将其绑定到本地主机的一个端口上。然后,我们将监听这个套接字,等待客户端的连接请求。一旦收到连接请求,我们将创建一个新的套接字来处理客户端的请求,并将其分配给一个新的线程来处理。
server.py:
```python
import socket
import threading
def handle_client(client_socket):
request = client_socket.recv(1024)
print('Received {}'.format(request))
client_socket.send('ACK'.encode())
client_socket.close()
def start_server():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8888))
server_socket.listen(5)
while True:
client_socket, _ = server_socket.accept()
client_thread = threading.Thread(target=handle_client, args=(client_socket,))
client_thread.start()
if __name__ == '__main__':
start_server()
```
在上面的代码中,我们定义了一个名为 handle_client 的函数,它接受一个客户端套接字作为参数,并处理客户端发送的请求。在这个示例中,我们只是简单地打印出客户端发送的消息,并向客户端发送一个称为 ACK 的响应。然后,我们关闭客户端套接字。
接下来,我们定义了一个名为 start_server 的函数,它创建一个服务器套接字并将其绑定到本地主机的端口上。然后,我们使用一个循环来监听这个套接字,并在收到连接请求时创建一个新的套接字来处理客户端请求。对于每个客户端连接,我们创建一个新的线程来处理它。
现在,我们需要编写一个 Python 脚本来实现客户端。在这个脚本中,我们将使用 socket 模块创建一个 TCP/IP 套接字,并将其连接到服务器的 IP 地址和端口上。然后,我们将向服务器发送一个消息,并等待服务器的响应。一旦收到响应,我们将打印出它并关闭客户端套接字。
client.py:
```python
import socket
def start_client():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 8888))
client_socket.send('Hello, server!'.encode())
response = client_socket.recv(1024)
print('Received {}'.format(response.decode()))
client_socket.close()
if __name__ == '__main__':
start_client()
```
在上面的代码中,我们定义了一个名为 start_client 的函数,它创建一个客户端套接字并将其连接到服务器的 IP 地址和端口上。然后,我们向服务器发送一个消息,并等待服务器的响应。一旦收到响应,我们将打印出它并关闭客户端套接字。
现在,我们可以在不同的终端窗口中分别运行 server.py 和 client.py 脚本,以测试我们的代码。当客户端连接到服务器时,服务器将打印出接收到的消息,并向客户端发送一个 ACK 响应。客户端将打印出收到的响应,并关闭连接。
阅读全文