我正在使用两个使用 UDP 套接字的二进制文件。进程 A 在 UDP 套接字 (IP_1:PORT_1) 上等待消息select()
,进程 B 最终通过 UDP 套接字发送。
由于一些超出范围的限制,进程 B 需要通过 (IP_1:PORT_1) 上的套接字发送。由于这两个进程的 IP:PORT 对相同,因此无法使用bind()
. 我试过了SO_REUSEADDR
,但我想知道重用 IP:PORTSO_REUSEADDR
用于发送和接收是否有意义,或者这个选项只是为了监听套接字而构思的?
过程A
int nOptVal = 1;
setsockopt(UDPSocket, SOL_SOCKET, SO_REUSEADDR, &nOptVal, sizeof(nOptVal));
bind(UDPSocket, (struct sockaddr *)&addrLocal, sizeof(addrLocal));
select(fdMax+1, UDPSocket, NULL, NULL, NULL);
工艺 B
int nOptVal = 1;
setsockopt(UDPSocket, SOL_SOCKET, SO_REUSEADDR, &nOptVal, sizeof(nOptVal));
bind(UDPSocket, (struct sockaddr *)&addrLocal, sizeof(addrLocal));
sendto(UDPSocket, buff, len, 0, (struct sockaddr *)&addrDest, sizeof(struct sockaddr));