Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
1. TCP/IP协议简介
- TCP: 面向连接的传输控制协议
- IP: 网际协议,负责把数据从一个网络节点传送到另一个网络节点。
TCP/IP 协议是互联网的基础协议,是互联网最重要的基础设施之一。
2. Python中的 socket 套接字
Python 中的 socket 模块提供了对网络编程中常用的一些套接字操作的封装。
使用套接字进行网络编程的一般步骤
- 创建 socket 套接字对象
- 绑定 IP 地址和端口号(仅服务端需要)
- 监听客户端连接请求(仅服务端需要)
- 接收客户端请求并响应(仅服务端需要)
- 连接服务端并发送数据(仅客户端需要)
- 接收服务端发送的数据(仅客户端需要)
2.1 创建 socket对象
import socket
# TCP Client
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# TCP Server
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.AF_INET 使用 IPv4 进行通信,socket.SOCK_STREAM 指定使用 TCP 进行通信。
2.2 绑定服务端IP地址和端口号
# 绑定 IP 地址和端口号
server_socket.bind(('localhost', 8000))
2.3 监听客户端连接请求
# 开始监听
server_socket.listen()
# 接受客户端连接
conn, addr = server_socket.accept()
2.4 接收客户端请求并响应
# 接收客户端请求
data = conn.recv(1024)
# 响应客户端请求
conn.sendall(data)
2.5 连接服务端并发送数据
# 建立连接
client_socket.connect(('localhost', 8000))
# 发送数据
client_socket.sendall(b'Hello, world!')
# 接收数据
data = client_socket.recv(1024)
# 解码数据并打印
print(data.decode())
3. 示例:创建 TCP 客户端和服务端
3.1 创建 TCP 服务端
import socket
def tcp_server():
# 创建 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务器地址和端口号
server_socket.bind(('localhost', 8000))
# 开始监听
server_socket.listen()
print('服务器已启动,等待客户端连接...')
while True:
# 接受客户端连接请求
conn, addr = server_socket.accept()
print('客户端已连接', addr)
# 接收客户端请求并响应
data = conn.recv(1024)
conn.sendall(data)
# 关闭连接
conn.close()
if __name__ == '__main__':
tcp_server()
3.2 创建 TCP 客户端
import socket
def tcp_client():
# 创建 socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 建立连接
client_socket.connect(('localhost', 8000))
# 发送数据
client_socket.sendall(b'Hello, world!')
# 接收数据
data = client_socket.recv(1024)
# 解码数据并打印
print(data.decode())
# 关闭连接
client_socket.close()
if __name__ == '__main__':
tcp_client()
以上示例实现了一个基本的 TCP 服务端和客户端连接、发送和接收数据的功能,代码简洁,易于理解。可以用于开发网络数据传输、通信或者数据采集等任何应用场景。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】 - Python技术站