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 小时前
【Linux】进程等待
linux·运维·服务器
河北瑾航科技1 小时前
广西水资源遥测终端 广西水利遥测终端 广西用水监测遥测终端 河北瑾航科技遥测终端机HBJH-B01说明书
网络·科技·水文遥测终端机·遥测终端机·广西水资源遥测终端机·广西水利遥测终端·广西用水终端
互联网老欣2 小时前
2025年保姆级教程:阿里云服务器部署Dify+Ollama,打造专属AI应用平台
服务器·阿里云·ai·云计算·dify·ollama·deepseek
羑悻的小杀马特2 小时前
轻量跨云·掌控无界:Portainer CE + cpolar 让远程容器运维像点外卖一样简单——免复杂配置,安全直达对应集群
运维·网络·安全·docker·cpolar
愚戏师3 小时前
Python3 Socket 网络编程复习笔记
网络·笔记
悦悦欧呐呐呐呐3 小时前
数据库事务是什么,怎么用的
服务器·数据库·oracle
降临-max3 小时前
JavaSE---网络编程
java·开发语言·网络·笔记·学习
156082072193 小时前
基于7VX690T FPGA实现万兆TCP/IP资源和性能测试
网络协议·tcp/ip·fpga开发
赖small强4 小时前
【Linux 网络基础】libwebsockets HTTPS 服务端实现机制详解
linux·网络·https·tls·libwebsockets
大白的编程日记.4 小时前
【计算网络学习笔记】MySql的多版本控制MVCC和Read View
网络·笔记·学习·mysql