在Python中编写网络程序主要使用`socket`模块。以下是一个简单的TCP服务器和客户端的示例代码:
TCP服务器代码
```python
import socket
def start_server(host='127.0.0.1', port=65432):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((host, port))
s.listen()
print(f"Server listening on {host}:{port}")
conn, addr = s.accept()
with conn:
print(f"Connected by {addr}")
while True:
data = conn.recv(1024)
if not data:
break
print(f"Received {data.decode()}")
conn.sendall(b'Hello, World!')
if __name__ == "__main__":
start_server()
```
TCP客户端代码
```python
import socket
def start_client(host='127.0.0.1', port=65432):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((host, port))
s.sendall(b'Hello, Server!')
data = s.recv(1024)
print(f"Received {data.decode()}")
if __name__ == "__main__":
start_client()
```
代码解释
导入socket模块
```python
import socket
```
创建socket对象
```python
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
```
绑定地址和端口
```python
s.bind((host, port))
```
监听连接
```python
s.listen()
```
接受客户端连接
```python
conn, addr = s.accept()
```
接收和发送数据
```python
while True:
data = conn.recv(1024)
if not data:
break
print(f"Received {data.decode()}")
conn.sendall(b'Hello, World!')
```
关闭连接
```python
conn.close()
```
其他注意事项
异常处理:在实际应用中,建议添加异常处理机制,以应对网络不稳定的情况。
多线程/并发:如果需要处理多个客户端连接,可以考虑使用多线程或异步IO来提高服务器的并发处理能力。
安全性:在编写网络程序时,应注意数据加密、身份验证等安全措施,确保数据传输的安全性。
通过以上步骤和示例代码,你可以快速地在Python中实现基本的网络编程功能。根据具体需求,你可以进一步扩展和优化这些代码。