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流模式通信。

相关推荐
车载测试工程师1 分钟前
CAPL学习-AVB交互层-概述
网络协议·tcp/ip·以太网·capl·canoe
虹科网络安全21 分钟前
艾体宝洞察 | 利用“隐形字符”的钓鱼邮件:传统防御为何失效,AI安全意识培训如何补上最后一道防线
运维·网络·安全
石像鬼₧魂石39 分钟前
Kali Linux 网络端口深度扫描
linux·运维·网络
alengan43 分钟前
linux上面写python3日志服务器
linux·运维·服务器
小卒过河01042 小时前
使用apache nifi 从数据库文件表路径拉取远程文件至远程服务器目的地址
运维·服务器·数据库
适应规律2 小时前
UNeXt-Stripe网络架构解释
网络
土星云SaturnCloud2 小时前
液冷“内卷”:在局部优化与系统重构之间,寻找第三条路
服务器·人工智能·ai·计算机外设
Trouvaille ~3 小时前
【Linux】理解“一切皆文件“与缓冲区机制:Linux文件系统的设计哲学
linux·运维·服务器·操作系统·进程·文件·缓冲区
纸带4 小时前
USB通信的状态
网络