|
dqzcwxbAug 26, 2021
1
连接可以是动词
|
|
2
看不懂,UDP 不需要连接。
|
|
ihipopAug 26, 2021 via Android
3
马上有人给你带 “连接👮”的帽子
|
|
lysSAug 26, 2021
4
哪有相似之处?
|
|
tinybaby365Aug 26, 2021
5
楼主说的是使用 udp 的 socket 进行 connect 调用吧?和 TCP 不一样,不会进行握手。Linux 的内核会在 connect 后,记录下目标的 ip 和端口,并且可以多次 connect 。
|
|
tinybaby365Aug 26, 2021
6
@tinybaby365 还是按照 UDP 原来的样子进行传输。不存在所谓的粘包。本来粘包也是一个错误的概念,send 只是把要发送的内容丢进 socket buffer 。
|
|
nameloswAug 26, 2021
8
这俩隶属不同的分局,辖区不一样。
|
|
MohansonAug 26, 2021
9
问一个刁钻的问题:
现有一台客户端和一台服务器, 客户端主动建立了到服务端的一个 TCP 连接和一个 UDP "连接", 之后, 拔出客户端的网线, 10 秒后再插回网线. 请问: 此时客户端能否通过 TCP 和 UDP "连接" 向服务端 send 数据, 服务端是否能收到? |
|
MohansonAug 26, 2021
10
扩展题:
1) 如果拔的是服务端的网线? 2) 如果拔网线后间隔 2 小时再插回去, 现象如何? |
|
MutooAug 26, 2021 via iPhone
11
英文都帮你找好了,叫 tcp over udp
|
|
weakishAug 26, 2021
12
可以把第一次发送 datagram (对于另一方来说是第一次接收)视作双方建立了「连接」,一方不再和另一方通讯视作「连接」断开。这样强行定义的连接的好处是很多时候我们关心的是双方之间的通讯,至于这个通讯是 TCP 还是 UDP 其实是实现细节,UDP 也定义连接就可以和 TCP 用差不多的方式处理,某些时候这样比较方便。
拿 Go 来说,UDP 也可以 Dial,也会返回 Conn,这个 Conn 同样也需要 close > func Dial(network, address string) (Conn, error) > Dial connects to the address on the named network. > Known networks are "tcp", "tcp4" (IPv4-only), "tcp6" (IPv6-only), "udp", "udp4" (IPv4-only), "udp6" (IPv6-only), "ip", "ip4" (IPv4-only), "ip6" (IPv6-only), "unix", "unixgram" and "unixpacket". https://pkg.go.dev/net#Dial |
|
jedihyAug 27, 2021
13
这叫 connected UDP sockets,性能比 unconnected 要快一点根据不同 OS 实现。
|
|
codehzAug 27, 2021 via Android
14
这事吧,还是有一点区别的,除了实现上确实可以 connected 之外,还有就是现实中网络设备也会对时间上和双方地址相近的 udp 包做特殊处理(也就是 NAT )。
试想,如果真的把 udp 做为无状态协议看待,NAT 打洞又该如何实现? |
|
fgwmlhdkkkwAug 27, 2021
16
已举报。
|