📄 120.htm
字号:
<br>
I don't have two Cards and Solaris. <br>
<br>
Scz,Could u do me a favor to test it <br>
under different environment? <br>
<br>
THank you in advance. <br>
//bow <br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
【 在 clown (梧桐叶) 的大作中提到: 】 <br>
: 【 在 eepaul (阿龙) 的大作中提到: 】 <br>
: : 标 题: Re: 关于SO_REUSEADDR选项的疑问 <br>
: : 发信站: UNIX编程 (2001年08月29日19:44:20 星期三), 站内信件 <br>
: : 如果sock1<--->ip1;sock2<-->ip2 <br>
: : 那么你在sock1上收到的udp包的目地地址就是ip1, <br>
: : 在sock2上收到的udp包的目地地址是ip2. <br>
: 上面的说明并没有解释我的问题呀。 <br>
: : 你看看section 19.11的那个例子就会明白了 <br>
: 看了19.11的例子,觉得是不是书上翻译的不正确,还是我的理解由错误。 <br>
: 19.11的例子使用该选项的目的是为了在一个进程内将一个端口绑定到多个ip <br>
: .................(以下省略) <br>
<br>
-- <br>
Rather than Love...Wealth... <br>
or Fame... <br>
Gave me Truth. <br>
-Walden <br>
※ 修改:·eepaul 於 08月29日22:54:56 修改本文·[FROM: 202.120.224.18] <br>
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 202.120.224.18] <br>
发信人: clown (梧桐叶), 信区: UNP <br>
标 题: Re: 关于SO_REUSEADDR选项的疑问 <br>
发信站: UNIX编程 (2001年08月30日08:46:54 星期四), 站内信件 <br>
<br>
<br>
【 在 scz (小四) 的大作中提到: 】 <br>
: 标 题: Re: 关于SO_REUSEADDR选项的疑问 <br>
: 发信站: UNIX编程 (2001年08月29日22:33:14 星期三), 站内信件 <br>
: <br>
: 1. UNP的例子多半是BSD的内核蓝本,我不清楚有多少可以用Linux <br>
: 来检验。而Sun OS是4.2 BSD过来的,所以很多可以适用 <br>
: 2. 第二个讨论是基于IP Alias的讨论,你的两个IP是两个网卡上的 <br>
: IP还是单网卡上的IP Alias?我没测试,不知道你怎么测试的 <br>
: 3. getsockname是面向连接的socket才能使用的,实际对于我们来说 <br>
: 就是TCP协议才能用这个。 <br>
但是书上说udp服务器中可以用改函数来得到客户端的端口呀(Page191)。 <br>
现在对于udp越来越糊涂了,现在要好好肯书。 <br>
: <br>
: > 但是不使用该选项也可以将一个端口绑定到多个ip上呀 <br>
: <br>
: 这里当时我也很迷糊,因为实际中没碰上这个需求,就来了个不求 <br>
: 甚解。现在我还是不知道到底是作者当时测试的OS与现在我们测试 <br>
: 的不同呢,还是我根本没真正理解这里所介绍的。 <br>
: <br>
: 你在Linux下分两种情况测试一下 <br>
: <br>
: 一个是双网卡,两个IP <br>
: 一个是单网卡,做IP Alias <br>
: <br>
: 测试的内容一样,一个UDP Server,该程序中 <br>
: 创建两个socket(s1、s2),分别绑定(IP1, same_port) <br>
: 和(IP2, same_port), <br>
: <br>
: 分两种情况 <br>
: <br>
: 使用SO_REUSEADDR <br>
: 不使用SO_REUSEADDR <br>
<br>
这个没有问题,双网卡,单网卡我都可以测试。现在就开始写程序。 <br>
: <br>
: 报告一下结果吧。最好把测试程序弄上来,好让我简单修改 <br>
: 后能去FreeBSD、Solaris也测试一下,看看到底怎么回事。 <br>
: 【 在 clown (梧桐叶) 的大作中提到: 】 <br>
: : 关于SO_REUSEADDR选项的疑问 <br>
: : 1. 如果iP地址不同,那么使用相同的端口应该是很正常的,那么是不是 <br>
: : 可以不用设置SO_REUSEADDR选项,但是书上又为什么专门在该选项中讨论 <br>
: : 了这种情况呢(书中的第二种情况)。我等一下测试一下,这种情况下到 <br>
: : 底是否需要该选项。 <br>
: : 2.对于书上的第三种情况,现在越看越糊涂,我把原文贴出来: <br>
: : Page167,第三段:SO_REUSEADDR允许单个进程捆绑同一端口到多个套接口 <br>
: : 上,只要每个捆绑指定不同的本地IP地址即可。在不支持IP_RECVDSTADDR套 <br>
: : 接口选项的系统上,这对于要求知道客户请求的目的IP地址的UDP服务器来说 <br>
: : 是非常普遍的,在19.11节中我们将用此技术开发一个例子。这项技术一般不 <br>
: : .................(以下省略) <br>
: <br>
: -- <br>
: <br>
: 也许有一天,他再从海上蓬蓬的雨点中升起, <br>
: 飞向西来,再形成一道江流,再冲倒两旁的石壁, <br>
: 再来寻夹岸的桃花。然而,我不敢说来生,也不敢信来生...... <br>
: ※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 211.167.65.123] <br>
发信人: scz (小四), 信区: UNP <br>
标 题: Re: 关于SO_REUSEADDR选项的疑问 <br>
发信站: UNIX编程 (2001年08月30日09:09:15 星期四), 站内信件 <br>
<br>
老大,如果你能输入中文的时候就输入中文吧, <br>
我实在是不怎么喜欢看中国人在能用中文的地方用蹩脚的英文。 <br>
尤其是讨论技术问题的时候。 <br>
能让我晕掉。 <br>
<br>
【 在 eepaul (阿龙) 的大作中提到: 】 <br>
: Single CArd <br>
: NO ip alias.(I don't down how to set ip alias ,so I don't test it <br>
: with ip alias) <br>
: $uname -sr <br>
: Linux 2.2.16-22 <br>
: $sock -s -u 10.83.66.66 8888& <br>
: [1] 1850 <br>
: $sock -s -u 127.0.0.1 8888 <br>
: (nothing happend) <br>
: $sock -s -u 8888& <br>
: .................(以下省略) <br>
<br>
-- <br>
<br>
也许有一天,他再从海上蓬蓬的雨点中升起, <br>
飞向西来,再形成一道江流,再冲倒两旁的石壁, <br>
再来寻夹岸的桃花。然而,我不敢说来生,也不敢信来生...... <br>
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 211.167.65.123] 发信人: scz <br>
(小四), 信区: UNP <br>
标 题: Re: 关于SO_REUSEADDR选项的疑问 <br>
发信站: UNIX编程 (2001年08月30日09:17:01 星期四), 站内信件 <br>
<br>
<br>
【 在 clown (梧桐叶) 的大作中提到: 】 <br>
: : 3. getsockname是面向连接的socket才能使用的,实际对于我们来说 <br>
: : 就是TCP协议才能用这个。 <br>
: 但是书上说udp服务器中可以用改函数来得到客户端的端口呀(Page191)。 <br>
: 现在对于udp越来越糊涂了,现在要好好肯书。 <br>
<br>
我上面说错了,想成getpeername()了。本意是,需要调用过connect(), <br>
对于UDP,可以调用connect(),但是我没有针对咱们现在讨论的这个问题 <br>
测试过。而且UDP Client一般也不调用connect。即使调用connect, <br>
在UDP Server端是否能够getpeername()。 <br>
<br>
对于getsockname,需要调用过bind()。你说的是对的。 <br>
<br>
UNP里的第三种情况我也晕着呢,你照前面建议的这个办法测试一下 <br>
再看看。 <br>
<br>
: 这个没有问题,双网卡,单网卡我都可以测试。现在就开始写程序。 <br>
<br>
: : ※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 211.167.65.123] <br>
<br>
<br>
-- <br>
<br>
也许有一天,他再从海上蓬蓬的雨点中升起, <br>
飞向西来,再形成一道江流,再冲倒两旁的石壁, <br>
再来寻夹岸的桃花。然而,我不敢说来生,也不敢信来生...... <br>
发信人: scz (小四), 信区: UNP <br>
标 题: Re: 关于SO_REUSEADDR选项的疑问 <br>
发信站: UNIX编程 (2001年08月30日09:27:40 星期四), 站内信件 <br>
<br>
你这个测试与我们希望看到的不符 <br>
<br>
ifconfig eth0:1 ... <br>
<br>
做IP Alias <br>
<br>
实际上你应该来一个10.83.66.67的IP别名 <br>
然后用这个socks测试 <br>
<br>
<br>
127.0.0.1与这里的讨论无关。 <br>
<br>
【 在 eepaul (阿龙) 的大作中提到: 】 <br>
: Single CArd <br>
: NO ip alias.(I don't down how to set ip alias ,so I don't test it <br>
: with ip alias) <br>
: $uname -sr <br>
: Linux 2.2.16-22 <br>
: $sock -s -u 10.83.66.66 8888& <br>
: [1] 1850 <br>
: $sock -s -u 127.0.0.1 8888 <br>
: (nothing happend) <br>
: $sock -s -u 8888& <br>
: .................(以下省略) <br>
<br>
-- <br>
<br>
也许有一天,他再从海上蓬蓬的雨点中升起, <br>
飞向西来,再形成一道江流,再冲倒两旁的石壁, <br>
再来寻夹岸的桃花。然而,我不敢说来生,也不敢信来生...... <br>
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 211.167.65.123] 发信人: clo <br>
wn (梧桐叶), 信区: UNP <br>
标 题: Re: 关于SO_REUSEADDR选项的疑问 <br>
发信站: UNIX编程 (2001年08月30日11:50:01 星期四), 站内信件 <br>
<br>
上午偷偷地把程序写好了,上班时间总是有一些事情打扰。 <br>
下午我偷偷地测试一下。 <br>
呵呵。 <br>
【 在 scz (小四) 的大作中提到: 】 <br>
: 你这个测试与我们希望看到的不符 <br>
: ifconfig eth0:1 ... <br>
: 做IP Alias <br>
: 实际上你应该来一个10.83.66.67的IP别名 <br>
: 然后用这个socks测试 <br>
: 127.0.0.1与这里的讨论无关。 <br>
: 【 在 eepaul (阿龙) 的大作中提到: 】 <br>
: : Single CArd <br>
: : NO ip alias.(I don't down how to set ip alias ,so I don't test it <br>
: : with ip alias) <br>
: .................(以下省略) <br>
-- <br>
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 202.114.1.61] 发信人: eepau <br>
l (阿龙), 信区: UNP <br>
标 题: Re: 关于SO_REUSEADDR选项的疑问 <br>
发信站: UNIX编程 (2001年08月30日12:00:29 星期四), 站内信件 <br>
<br>
<br>
【 在 scz (小四) 的大作中提到: 】 <br>
: 你这个测试与我们希望看到的不符 <br>
: ifconfig eth0:1 ... <br>
: 做IP Alias <br>
: 实际上你应该来一个10.83.66.67的IP别名 <br>
搞了一个别名,10.83.66.67.然后 <br>
<br>
<br>
1.不用INADDR_ANY,有别名 <br>
<br>
$sock -s -u 10.83.66.67 8888 <br>
<br>
(在另一个终端上) <br>
$sock -s -u 10.83.66.66 8888 <br>
<br>
(在另一个终端上) <br>
$netstat -a | grep udp <br>
udp 0 0 10.83.66.67:8888 *:* <br>
udp 0 0 10.83.66.66:8888 *:* <br>
<br>
<br>
2.用INADDR_ANY,有别名. <br>
<br>
$sock -s -u 9999 <br>
<br>
(在令一个终端上) <br>
$sock -s -u 10.83.66.66 9999 <br>
can't bink local address: Address alread in use <br>
<br>
$sock -s -u -A 10.83.66.66 9999 <br>
can't bind...................................... <br>
<br>
如果两个都用-A选项,就可以 <br>
$sock -s -u -A 5555 <br>
<br>
(在令一个终端) <br>
$sock -s -u -A 10.83.66.66 5555 <br>
<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -