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 小时前
CKS认证 | Day3 K8s容器运行环境安全加固
运维·网络·安全·云原生·kubernetes·云计算
我是唐青枫1 小时前
Linux ar 命令使用详解
linux·运维·服务器
iOS技术狂热者1 小时前
多图超详细安装flutter&Android Studio开发环境,并配置插件
websocket·网络协议·tcp/ip·http·网络安全·https·udp
余华余华1 小时前
计算机等级考试数据库三级(笔记3)
服务器·数据库·oracle
IEVEl2 小时前
Centos7 开放端口号
linux·网络·centos
今夜有雨.2 小时前
HTTP---基础知识
服务器·网络·后端·网络协议·学习·tcp/ip·http
Synfuture阳途2 小时前
关于终端安全管理系统的超全解析
网络·安全·web安全
echoHaha032 小时前
域渗透(web安全)
网络·安全
盛满暮色 风止何安4 小时前
VLAN的高级特性
运维·服务器·开发语言·网络·网络协议·网络安全·php
yangpipi-5 小时前
6. 王道_网络协议
网络·网络协议