在Python中,设置一个基本的socket服务器需要以下步骤:
创建socket对象
```python
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
```
绑定IP地址和端口号
```python
server.bind(('127.0.0.1', 8888))
```
开始监听
```python
server.listen(5)
```
接受客户端连接
```python
client_socket, addr = server.accept()
```
接收客户端消息
```python
msg = client_socket.recv(1024).decode('utf-8')
```
发送响应
```python
client_socket.send("收到你的消息啦!".encode('utf-8'))
```
关闭连接
```python
client_socket.close()
```
将以上代码整合在一起,一个简单的服务器代码如下:
```python
import socket
创建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_socket, addr = server.accept()
print(f"客户端 {addr} 已连接")
接收客户端消息
msg = client_socket.recv(1024).decode('utf-8')
print(f"收到消息: {msg}")
发送响应
client_socket.send("收到你的消息啦!".encode('utf-8'))
关闭连接
client_socket.close()
```
这个代码会创建一个监听在本地IP(127.0.0.1)和端口8888的服务器,等待客户端连接,接收消息并回复“收到你的消息啦!”。
多线程版本的服务器
如果需要服务器能够同时处理多个客户端连接,可以使用多线程。以下是一个多线程服务器的示例:
```python
import socket
import threading
def handle_client(client_socket, addr):
while True:
接收客户端消息
data = client_socket.recv(1024).decode('utf-8')
print(f"收到来自 {addr} 的消息: {data}")
发送响应
client_socket.send("收到你的消息了!".encode('utf-8'))
创建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_socket, addr = server.accept()
print(f"客户端 {addr} 已连接")
创建新线程处理客户端连接
client_handler = threading.Thread(target=handle_client, args=(client_socket, addr))
client_handler.start()
```
这个多线程服务器会在接收到新的客户端连接时,创建一个新的线程来处理该客户端的消息,从而允许多个客户端同时连接和服务。