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

2014-11-24 02:52:08 +08:00
 wilsonxyz
如题,作为客户端来说,谢谢各位的答复。
3763 次点击
所在节点    问与答
5 条回复
ohyeah521
2014-11-24 07:31:30 +08:00
用udp协议
lhbc
2014-11-24 08:16:40 +08:00
TCP/IP只发不收,是无法通讯的,除非你修改TCP协议,在SYN包里传输内容,服务器接收后解包
只发不收,就是SYN洪水攻击的原理,小心运营商或者IDC封你IP

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

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

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

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

UDP 是正解
zhicheng
2014-11-24 13:42:32 +08:00
楼主应该是把 TCP 和 HTTP 协议搞混了。如果想只发不收,只要 server 不 send 数据就可以。
如果强制不收,可以用 shutdown 关掉连接的接收一端。详见 man 2 shutdown 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/148794

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX