如何实现socket对等通信,即既可以作为服务器端,也可以作为客户端?
时间: 2023-08-11 18:05:42 浏览: 39
要实现socket对等通信,可以使用Python中的socket库。下面是一个简单的例子,其中创建了一个可以同时作为服务器端和客户端的程序:
```python
import socket
HOST = 'localhost'
PORT = 5000
def server():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
print('Server is listening on {}:{}'.format(HOST, PORT))
conn, addr = s.accept()
print('Connected by', addr)
with conn:
while True:
data = conn.recv(1024)
if not data:
break
print('Received:', data.decode())
conn.sendall(data)
def client():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
print('Client is connected to {}:{}'.format(HOST, PORT))
s.sendall(b'Hello, server!')
data = s.recv(1024)
print('Received:', data.decode())
if __name__ == '__main__':
server()
client()
```
该代码中,首先定义了主机名和端口号。然后定义了两个函数,一个是服务器函数,一个是客户端函数。在服务器函数中,首先创建一个socket对象,然后绑定主机名和端口号,然后使用listen函数来监听连接请求。如果有连接请求,就调用accept函数来接受连接请求,并返回一个新的socket对象和客户端地址。接着,使用while循环来接收和发送数据,直到收到空数据,即连接断开。在客户端函数中,首先创建一个socket对象,然后使用connect函数来连接服务器端。接着,发送一条消息给服务器端,然后接收服务器端的响应。
在主程序中,首先调用服务器函数,然后调用客户端函数。这样可以实现一个简单的socket对等通信程序。