编写一个基本的socket网络程序包括服务器端和客户端两个部分。以下是一个简单的Python示例,展示了如何实现一个基本的TCP服务器和客户端。
服务器端代码
```python
import socket
创建一个socket对象
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
绑定本地地址和端口
server.bind(('127.0.0.1', 8888))
开始监听,最大挂起连接数为5
server.listen(5)
print('服务器启动,等待客户端连接...')
while True:
接受客户端连接
client, addr = server.accept()
print(f'客户端已连接: {addr}')
接收客户端消息
data = client.recv(1024).decode('utf-8')
print(f'客户端说: {data}')
向客户端发送响应
client.send('Hello from server!'.encode('utf-8'))
关闭客户端连接
client.close()
```
客户端代码
```python
import socket
创建一个socket对象
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
连接到服务器
client.connect(('127.0.0.1', 8888))
向服务器发送消息
client.send('Hello from client!'.encode('utf-8'))
接收服务器响应
data = client.recv(1024).decode('utf-8')
print(f'服务器说: {data}')
关闭客户端连接
client.close()
```
解释
服务器端代码:
创建一个socket对象,使用`socket.AF_INET`和`socket.SOCK_STREAM`表示使用IPv4协议和TCP协议。
使用`bind`方法绑定本地地址和端口(这里使用`127.0.0.1`和8888端口)。
使用`listen`方法开始监听,最大挂起连接数为5。
使用`accept`方法接受客户端连接,返回一个新的socket对象和客户端地址。
使用`recv`方法接收客户端发送的数据,并使用`send`方法向客户端发送响应。
关闭客户端连接。
客户端代码:
创建一个socket对象,使用`socket.AF_INET`和`socket.SOCK_STREAM`表示使用IPv4协议和TCP协议。
使用`connect`方法连接到服务器(这里使用`127.0.0.1`和8888端口)。
使用`send`方法向服务器发送消息。
使用`recv`方法接收服务器发送的响应。
关闭客户端连接。
这个示例展示了如何使用Python的socket库进行基本的TCP通信。你可以根据需要扩展这个示例,例如添加多线程处理多个客户端连接、使用非阻塞I/O、实现更复杂的应用层协议等。