python编写socket服务端
时间: 2025-01-09 21:52:48 浏览: 54
### 如何使用 Python 编写 Socket 服务端
编写一个简单的 Python 基于 Socket 的服务端涉及几个关键步骤。下面是一个基础的例子,展示了如何创建、绑定、监听以及接收来自客户端的信息。
#### 创建套接字
为了初始化通信接口,需要先创建一个新的套接字对象。这可以通过调用 `socket()` 函数完成,并指明所使用的协议族(如 AF_INET 表示 IPv4),还有数据传输方式(SOCK_STREAM 对应 TCP 流式套接字)[^2]。
```python
import socket
def tcpServer():
host = '192.168.1.4'
port = 6000
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
```
#### 绑定地址和端口号
一旦有了套接字实例,下一步就是将其与特定的 IP 地址及端口关联起来以便其他设备能够找到该服务端。这里使用了本地局域网内的私有 IP 和任意选定的一个未被占用的端口作为参数传递给 bind 方法。
```python
server_socket.bind((host, port))
```
#### 开始监听请求
设置好之后就可以让服务器处于监听模式准备接受外部连接了。listen 方法中的参数表示允许的最大排队数目;当超过这个数量时新来的连接会被拒绝直到队列中有位置腾出来为止。
```python
server_socket.listen(5)
print(f'Server listening on {host}:{port}')
```
#### 接受并处理客户机连接
最后一步是从 accept 获得已建立好的连接描述符,通过循环不断读取对方发过来的数据直至遇到终止条件。对于每一个成功的连接都会开启一个新的线程或子进程去单独负责交流从而不影响主线程继续等待更多客户的接入。
```python
while True:
conn, addr = server_socket.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024).decode('utf-8')
if not data or data.lower() == 'quit':
break
print(f"Received from client: {data}")
response = f"ECHO: {data}"
conn.sendall(response.encode('utf-8'))
if __name__ == '__main__':
try:
tcpServer()
except Exception as e:
print(e)
# 如果发生异常,则关闭服务器端 socket 并尝试重启
server_socket.close()
raise SystemExit
```
上述代码片段展示了一个完整的 Python 实现的简单 TCP Server 模型,其中包含了必要的错误处理逻辑以确保即使出现问题也能安全退出而不至于留下僵尸进程或者泄露资源[^3]。
阅读全文
相关推荐


















