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

相关推荐
爱写代码的森10 小时前
鸿蒙三方库 | harmony-utils之ImageUtil图片保存到本地详解
服务器·华为·harmonyos·鸿蒙·huawei
REDcker12 小时前
显示分辨率标准对照详解
前端·网络·分辨率·显示·屏幕
ANSIOT13 小时前
安朔科技蓝牙无感开锁方案,靠近自动解锁
网络·科技·物联网
晏宁科技YaningAI14 小时前
VoIP系统的工程实现模型:从信令控制到媒体传输的完整架构解析
网络·人工智能·架构·系统架构·信息与通信
HLC++14 小时前
Linux的进程间通信
android·linux·服务器
白露与泡影15 小时前
Arthas 实战指南:从方法耗时定位到 JVM 变量热修改
服务器·jvm·c#
神奇霸王龙16 小时前
Claude Code屠榜:MiMo与Grok紧追Codex
服务器·网络·人工智能·gpt·ai·ai编程
Web极客码16 小时前
WordPress SEO优化:提升网站排名的13个关键步骤
服务器·seo·wordpress
数智化管理手记18 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
LabVIEW开发18 小时前
NI Package Manager安装LabVIEW时InternalServerError错误
网络·数据库·labview·labview知识·labview功能·labview程序