0

我正在使用两个使用 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));
4

0 回答 0