在 Python 网络编程中,套接字(Sockets)是核心概念之一,它为程序间的网络通信提供了基础。
一、套接字简介
套接字是网络通信的端点,它允许不同计算机上的程序进行通信。
二、TCP 套接字
创建服务器套接字
使用socket.socket()
函数创建套接字。绑定地址和端口
指定服务器监听的地址和端口。监听连接
调用listen()
方法开始监听客户端连接。接受客户端连接
通过accept()
方法接受客户端的连接请求。数据通信
使用recv()
和send()
方法进行数据的接收和发送。
三、UDP 套接字
与 TCP 套接字类似,但 UDP 是无连接的协议。
示例代码:
TCP 服务器示例:
import socket
def tcp_server():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('127.0.0.1', 8888)
server_socket.bind(server_address)
server_socket.listen(5)
print("服务器启动,监听端口 8888...")
client_socket, client_address = server_socket.accept()
print(f"客户端 {client_address} 连接成功")
data = client_socket.recv(1024)
print(f"收到客户端数据: {data.decode('utf-8')}")
response = "你好,客户端!"
client_socket.send(response.encode('utf-8'))
client_socket.close()
server_socket.close()
tcp_server()
TCP 客户端示例:
import socket
def tcp_client():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('127.0.0.1', 8888)
client_socket.connect(server_address)
message = "我是客户端"
client_socket.send(message.encode('utf-8'))
response = client_socket.recv(1024)
print(f"收到服务器响应: {response.decode('utf-8')}")
client_socket.close()
tcp_client()
四、注意事项
- 地址和端口的选择要避免冲突。
- 处理好异常情况,确保程序的健壮性。
通过对套接字的学习和实践,我们可以构建各种网络应用,实现不同程序之间的通信和数据交换。随着对网络编程的深入理解,我们可以进一步探索更复杂的网络架构和应用场景。