【发布时间】:2018-04-12 22:34:22
【问题描述】:
根据connect() 的手册页,
如果套接字 sockfd 是 SOCK_DGRAM 类型,那么 addr 是默认发送数据报的地址,也是接收数据报的唯一地址。
我有程序 A 在其套接字上调用connect,地址为 127.0.0.1 和端口 1212,程序 B 在其套接字上调用bind,地址为 IN_ADDRANY 和端口 1212。
当程序 A 使用 send 发送数据包时,程序 B 接收数据包并使用 recvfrom 指示源地址实际上是 127.0.0.1。
当程序 B 在其套接字上调用connect 时,问题就出现了,地址为 127.0.0.1,端口为 1212,位于bind 之后。当程序 A 发送数据包时,程序 B 将不再接收数据包。
这是预期的行为吗?
【问题讨论】: