回答 #148555, 关于地址端口复用。

sargee (sargee)
如果一个机器A有client-c1和server-s1,并共用一个IP地址-ipa和端口号-pna。它们要和另外一个机器B通讯,并且c1 connect到B 地址-ipb和端口-pnb,s1 accept 远端地址和端口也为ipb, pnb, 那么不可以。
除此以外均可。

在bind前需做以下工作才不会报错:
sockopt=1
if (setsockopt (sockfd, SOL_SOCKET, SO_REUSEADDR, (char *)&sockopt, sizeof (sockopt)) != 0)
{
perror("setsockopt");;
exit(1);
} .
if (setsockopt (sockfd, SOL_SOCKET, SO_REUSEPORT, (char *)&sockopt, sizeof (sockopt)) != 0)
{
perror("setsockopt");;
exit(1);
} .

如果你用的是Linux, 那么第2个SO_REUSEPORT不可用,即不能端口复用。Freebsd两个都可以,破破的Windows我不知道,你可以去试。
(#176617@0)
2001-8-23 -05:00

回到话题: 回答 #148555, 关于地址端口复用。

回到论坛: HOME枫下论坛枫下论坛主坛工作学习IT技术讨论

URL:   
http://www.rolia.net/zh/post.php?f=0&p=176617