Stream流模式通信是指在计算机网络中,数据作为连续的字节流传输而不是独立的数据包。它是一种面向连接的通信方式,常见于TCP(传输控制协议)。以下是Stream流模式通信的基本概念和一个简单的示例。
基本概念
- 面向连接:在Stream流模式下,通信双方必须先建立连接才能进行数据传输。TCP协议通过三次握手建立连接。
- 可靠性:TCP保证数据按序到达,不丢失,不重复。
- 流量控制:TCP具有流量控制机制,防止发送方发送数据过快,导致接收方无法处理。
- 错误检测与恢复:TCP使用校验和、确认机制来检测和恢复错误数据。
示例:Python实现简单的TCP客户端和服务器
下面是一个简单的Python示例,展示如何使用TCP进行Stream流模式通信。
服务器端代码
import socketdef start_server():# 创建TCP/IP套接字server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定套接字到地址和端口server_address = ('localhost', 65432)server_socket.bind(server_address)# 监听连接server_socket.listen(1)print(f"Server listening on {server_address}")while True:# 接受连接connection, client_address = server_socket.accept()try:print(f"Connection from {client_address}")while True:data = connection.recv(1024)if data:print(f"Received: {data.decode()}")connection.sendall(data) # Echo the received data back to the clientelse:breakfinally:connection.close()if __name__ == "__main__":start_server()
客户端代码
import socketdef start_client():# 创建TCP/IP套接字client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 连接服务器server_address = ('localhost', 65432)client_socket.connect(server_address)try:# 发送数据message = 'Hello, Server!'client_socket.sendall(message.encode())# 接收响应data = client_socket.recv(1024)print(f"Received: {data.decode()}")finally:client_socket.close()if __name__ == "__main__":start_client()
运行说明
- 先运行服务器端代码
start_server()
。 - 服务器启动后,运行客户端代码
start_client()
。 - 客户端将消息发送到服务器,服务器接收消息并回显。
- 客户端接收服务器回显的消息并打印。
解释
-
服务器端:
- 创建一个TCP套接字并绑定到本地地址和端口。
- 监听连接,等待客户端连接。
- 接受客户端连接,接收数据并回显。
- 如果没有更多数据,关闭连接。
-
客户端:
- 创建一个TCP套接字并连接到服务器。
- 发送消息到服务器。
- 接收服务器的回显消息并打印。
- 关闭连接。
通过这种方式,可以实现基于TCP的Stream流模式通信。