要用Python编写一个简单的服务器程序,你可以按照以下步骤操作:
导入socket模块
```python
import socket
```
创建一个socket对象
```python
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
```
绑定IP地址和端口号
```python
s.bind(('', 6666)) 使用空字符串表示本机任意IP,端口号随意选择一个未被占用的,例如6666
```
开始监听连接请求
```python
s.listen(5) 最多允许5个客户端连接
```
接受客户端连接
```python
while True:
client_socket, client_address = s.accept()
print(f'客户端 {client_address} 已连接')
```
接收客户端发送的数据
```python
data = client_socket.recv(1024) 最多接收1024字节
print(f'收到数据:{data.decode()}')
```
给客户端发送数据
```python
client_socket.send('你好,客户端!'.encode()) encode() 把字符串编码成字节
```
关闭客户端连接
```python
client_socket.close()
```
将以上代码片段组合在一起,就得到了一个简单的Python服务器程序。你可以根据需要修改端口号、增加处理逻辑等。
示例代码
```python
import socket
创建一个socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
绑定IP地址和端口号
s.bind(('', 6666))
开始监听连接请求
s.listen(5)
print('服务器启动成功,等待连接...')
while True:
接受客户端连接
client_socket, client_address = s.accept()
print(f'客户端 {client_address} 已连接')
接收客户端发送的数据
data = client_socket.recv(1024)
print(f'收到数据:{data.decode()}')
给客户端发送数据
client_socket.send('你好,客户端!'.encode())
关闭客户端连接
client_socket.close()
```
多客户端处理
如果你需要同时处理多个客户端连接,可以使用多线程。以下是一个简单的多线程服务器示例:
```python
import socket
import threading
def handle_client(client_socket, addr):
print(f'收到来自{addr}的连接')
data = client_socket.recv(1024)
print(f'收到消息: {data.decode()}')
client_socket.send('收到啦!'.encode())
client_socket.close()
创建一个socket对象
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
绑定IP地址和端口
server.bind(('127.0.0.1', 8888))
开始监听
server.listen(5)
print('服务器启动啦,等待连接...')
while True:
等待客户端连接
client, addr = server.accept()
print(f'收到来自{addr}的连接')
创建新线程处理客户端连接
client_handler = threading.Thread(target=handle_client, args=(client, addr))
client_handler.start()
```
这个示例中,服务器会创建一个新线程来处理每个客户端连接,从而实现多客户端同时处理。