Stream流模式通信是指在计算机网络中,数据作为连续的字节流传输而不是独立的数据包。它是一种面向连接的通信方式,常见于TCP(传输控制协议)。以下是Stream流模式通信的基本概念和一个简单的示例。
基本概念
- 面向连接:在Stream流模式下,通信双方必须先建立连接才能进行数据传输。TCP协议通过三次握手建立连接。
- 可靠性:TCP保证数据按序到达,不丢失,不重复。
- 流量控制:TCP具有流量控制机制,防止发送方发送数据过快,导致接收方无法处理。
- 错误检测与恢复:TCP使用校验和、确认机制来检测和恢复错误数据。
示例:Python实现简单的TCP客户端和服务器
下面是一个简单的Python示例,展示如何使用TCP进行Stream流模式通信。
服务器端代码
python
import socket
def 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 client
else:
break
finally:
connection.close()
if __name__ == "__main__":
start_server()
客户端代码
python
import socket
def 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流模式通信。