zoukankan      html  css  js  c++  java
  • TCP的半连接

    T C P提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。这就是所谓
    下载
    的半关闭。正如我们早些时候提到的只有很少的应用程序使用它。
    为了使用这个特性,编程接口必须为应用程序提供一种方式来说明“我已经完成了数据
    传送,因此发送一个文件结束( F I N)给另一端,但我还想接收另一端发来的数据,直到它给
    我发来文件结束(F I N)”。
    如果应用程序不调用c l o s e而调用s h u t d o w n,且第2个参数值为1,则插口的A P I支持
    半关闭。然而,大多数的应用程序通过调用close终止两个方向的连接。


    为什么要有半关闭?一个例子是 U n i x中的r s h( 1 )命令,它将完成在另一个系统上执行一
    个命令。命令
    sun % rsh bsdi sort < datafile
    将在主机b s d i上执行s o r t排序命令,r s h命令的标准输入来自文件d a t a f i l e。r s h将在它
    与在另一主机上执行的程序间建立一个 T C P连接。 r s h的操作很简单:它将标准输入
    (d a t a f i l e)复制给T C P连接,并将结果从 T C P连接中复制给标准输出(我们的终端)。图显示了这个建立过程(牢记TCP连接是全双工的)。

    在远端主机b s d i上,r s h d服务器将执行s o r t程序,它的标准输入和标准输出都是 T C P
    连接。
    s o r t程序只有读取到所有输入数据后才能产生输出。所有的原始数据通过 T C P连接从
    r s h客户端传送到s o r t服务器进行排序。当输入( d a t a f i l e)到达文件尾时, r s h客户端
    执行这个T C P连接的半关闭。接着s o r t服务器在它的标准输入(这个 T C P连接)上收到一个
    文件结束符,对数据进行排序,并将结果写在它的标准输出上( T C P连接)。r s h客户端继续
    接收来自T C P连接另一端的数据,并将排序的文件复制到它的标准输出上。
    没有半关闭,需要其他的一些技术让客户通知服务器, 客户端已经完成了它的数据传送,但
    仍要接收来自服务器的数据。使用两个T C P连接也可作为一个选择,但使用半关闭的单连接更好。

  • 相关阅读:
    Unix系统编程(四)creat系统调用
    Unix系统编程(三)通用的I/O
    Unix系统编程(二)open的练习
    FTP协议的粗浅学习--利用wireshark抓包分析相关tcp连接
    Linux上的ftp服务器 vsftpd 之配置满天飞--设置匿名用户访问(不弹出用户名密码框)以及其他用户可正常上传
    intelj idea编译项目报错,Error:ajc: The method getDestHost() is undefined
    oracle索引优化
    wireshark 表达式备忘录
    rabbitmq日志记录进出的每条消息
    powerDesigner根据sql脚本来逆向生成pdm等模型
  • 原文地址:https://www.cnblogs.com/momenglin/p/11318203.html
Copyright © 2011-2022 走看看