V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wilsonxyz
V2EX  ›  问与答

tcp/ip 是不是一定要一收一发?可以只发不收吗?

  •  
  •   wilsonxyz · 2014-11-24 02:52:08 +08:00 · 3737 次点击
    这是一个创建于 3469 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,作为客户端来说,谢谢各位的答复。
    5 条回复    2014-11-24 13:42:32 +08:00
    ohyeah521
        1
    ohyeah521  
       2014-11-24 07:31:30 +08:00
    用udp协议
    lhbc
        2
    lhbc  
       2014-11-24 08:16:40 +08:00
    TCP/IP只发不收,是无法通讯的,除非你修改TCP协议,在SYN包里传输内容,服务器接收后解包
    只发不收,就是SYN洪水攻击的原理,小心运营商或者IDC封你IP

    这个应用应该用UDP来实现
    damngood
        3
    damngood  
       2014-11-24 08:54:43 +08:00
    刚一看标题, 我以为楼主的意思是问 [在 tcp 下是否可以单向的传输数据 ?]

    但是看了楼上两位的发言, 貌似这个问题又成了 [tcp 是否一定要先 connect?]

    如果是我开始理解的第一个问题的话, 那当然是可以的. 甚至为了保证这一点, 可以在服务器方单方 close 掉这个 连接.
    rrfeng
        4
    rrfeng  
       2014-11-24 09:00:40 +08:00
    严格的收发来说(发送任何数据都当作 [发] ),显然不行,TCP 必须先建立连接,三次握手必须有的。

    如果指的是纯数据,那么连接建立之后怎么发和收是你自己定义的(不包括确认报文,或者下手改掉)。

    UDP 是正解
    zhicheng
        5
    zhicheng  
       2014-11-24 13:42:32 +08:00
    楼主应该是把 TCP 和 HTTP 协议搞混了。如果想只发不收,只要 server 不 send 数据就可以。
    如果强制不收,可以用 shutdown 关掉连接的接收一端。详见 man 2 shutdown 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1019 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:50 · PVG 04:50 · LAX 13:50 · JFK 16:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.