Stream流模式通信及示例

Stream流模式通信是指在计算机网络中,数据作为连续的字节流传输而不是独立的数据包。它是一种面向连接的通信方式,常见于TCP(传输控制协议)。以下是Stream流模式通信的基本概念和一个简单的示例。

基本概念

  1. 面向连接:在Stream流模式下,通信双方必须先建立连接才能进行数据传输。TCP协议通过三次握手建立连接。
  2. 可靠性:TCP保证数据按序到达,不丢失,不重复。
  3. 流量控制:TCP具有流量控制机制,防止发送方发送数据过快,导致接收方无法处理。
  4. 错误检测与恢复: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()

运行说明

  1. 先运行服务器端代码 start_server()。
  2. 服务器启动后,运行客户端代码 start_client()。
  3. 客户端将消息发送到服务器,服务器接收消息并回显。
  4. 客户端接收服务器回显的消息并打印。

解释

  • 服务器端:

    • 创建一个TCP套接字并绑定到本地地址和端口。
    • 监听连接,等待客户端连接。
    • 接受客户端连接,接收数据并回显。
    • 如果没有更多数据,关闭连接。
  • 客户端:

    • 创建一个TCP套接字并连接到服务器。
    • 发送消息到服务器。
    • 接收服务器的回显消息并打印。
    • 关闭连接。

通过这种方式,可以实现基于TCP的Stream流模式通信。

相关推荐
小羊没烦恼!13 分钟前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
lpfasd12317 分钟前
网络盘上的同一个报错,两个 AI 各走了一条路
网络·ai编程
腾科IT教育29 分钟前
HCIE-Datacom通关经验分享 - 毕业一年网工备考心得
网络·经验分享·学习方法·华为认证·hcie·数通
瑞克-桑切斯39 分钟前
真实企业场景 运维安全与管理
java·网络·github
xixingzhe21 小时前
Nginx 看懂请求耗时瓶颈
服务器·前端·nginx
星恒讯工业路由器1 小时前
2030通信网络决策:5G-A与6G的战略选择框架
网络·物联网·信息与通信·6g·5g-a·通信物联网·tco成本
见合八方1 小时前
光通信系统中的光电探测器
网络·soa·光通信·激光雷达·半导体光放大器
星恒讯工业路由器1 小时前
双栈时代的访问断层:当同一个域名走向两条网络路径
网络·物联网·信息与通信·ipv4·通信·ipv6·双栈网络
荒--2 小时前
Ubuntu软件包查询,弹框下载文件
运维·服务器·ubuntu