📄 65.htm
字号:
{ <br>
fd[i]=socket(AF_INET,SOCK_STREAM,0); <br>
setsockopt(fd[i],SOL_SOCKET,SO_REUSEADDR,&optval,sizeof(optval)); <br>
if ( bind( fd[i],(struct sockaddr *)&bindaddr,sizeof(bindaddr) ) ) <br>
{ <br>
perror("bind"); <br>
break; <br>
} <br>
else <br>
else <br>
{ <br>
fprintf(stderr,"socket %d bind succeded\n",i); <br>
} <br>
<br>
/*这里如果加listen,则其它套接字就不能绑定*/ <br>
/* listen(fd[i],5) ; */ <br>
} <br>
<br>
fprintf(stderr,"press any key to exit...\n"); <br>
getchar(); <br>
<br>
return 0; <br>
} <br>
-- <br>
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 211.69.197.81] 发信人: scz <br>
(小四), 信区: UNP <br>
标 题: Re: TCP重复绑定的疑问? <br>
发信站: UNIX编程 (2001年08月31日13:56:21 星期五), 站内信件 <br>
<br>
<br>
【 在 ysqcn (岁月无声) 的大作中提到: 】 <br>
: : 不知道你看的是哪个程序。反正如果不关闭,即使设置该标志,完全重复绑定是不可能 <br>
的。 <br>
: : 一旦关闭就又是第一种情况了,更没有疑问了。 <br>
: 这个程序是个没有用的程序,虽然不是关闭套接字,但它的状态是TCP_CLOSE。很简单, <br>
: 如下:(运行后十个套接字都绑定,但在bind后如果加listen就不能重复绑定) <br>
<br>
太不幸了,我在FreeBSD 4.3/Solaris 7下测试你这个程序 <br>
现在是不加lieten,也不能重复绑定,也就是和书上介绍的相符合 <br>
也和前面那个TCP状态机的结论相符合。 <br>
<br>
你测试的是Linux吧。 <br>
我在Linux下测试的确如果不listen是成功了的。 <br>
<br>
所以你们要是看先生的书,务必找FreeBSD测试,他的书多半是 <br>
4.x BSD-Lite 2的蓝本,FreeBSD继承了很多。 <br>
<br>
顺便提一句, <br>
<br>
bzero(&bindaddr,sizeof(bindaddr)); <br>
<br>
这条最好还是带上,否则在非Linux机器上不好说。 <br>
我刚才就碰上怪事了,加了才正常 <br>
<br>
<br>
: #include <stdio.h> <br>
: #include <stdlib.h> <br>
: #include <sys/types.h> <br>
: #include <sys/socket.h> <br>
: #include <netinet/in.h> <br>
: #include <arpa/inet.h> <br>
: .................(以下省略) <br>
<br>
-- <br>
<br>
也许有一天,他再从海上蓬蓬的雨点中升起, <br>
飞向西来,再形成一道江流,再冲倒两旁的石壁, <br>
再来寻夹岸的桃花。然而,我不敢说来生,也不敢信来生...... <br>
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 211.167.65.123] 发信人: ysq <br>
cn (岁月无声), 信区: UNP <br>
标 题: Re: TCP重复绑定的疑问? <br>
发信站: UNIX编程 (2001年08月31日14:35:27 星期五), 站内信件 <br>
<br>
<br>
: 太不幸了,我在FreeBSD 4.3/Solaris 7下测试你这个程序 <br>
: 现在是不加lieten,也不能重复绑定,也就是和书上介绍的相符合 <br>
: 也和前面那个TCP状态机的结论相符合。 <br>
linux下不加listen就能绑定.但正如clown所说,这样没有什么意义. <br>
现在的感觉是在那儿钻牛角尖,与实际并没有多大意义.也就如你前面 <br>
说的,不管那么多,都加上那个标志,如果真有这样的需要,那就要考虑 <br>
程序设计是否合理了. <br>
: <br>
: 你测试的是Linux吧。 <br>
: 我在Linux下测试的确如果不listen是成功了的。 <br>
: <br>
: 所以你们要是看先生的书,务必找FreeBSD测试,他的书多半是 <br>
: 4.x BSD-Lite 2的蓝本,FreeBSD继承了很多。 <br>
现在只有一个linux,学习也只有看这本书,其它的差不多都是抄袭先生的, <br>
我手头就有一本讲linux网罗编程的, 觉得抄袭得太没有专业精神了,很多 <br>
都没有在linux下测试. <br>
: <br>
: 顺便提一句, <br>
: <br>
: bzero(&bindaddr,sizeof(bindaddr)); <br>
多谢提醒,这一句好歹要加上 <br>
: <br>
: 这条最好还是带上,否则在非Linux机器上不好说。 <br>
: 我刚才就碰上怪事了,加了才正常 <br>
: <br>
: <br>
: : #include <stdio.h> <br>
: : #include <stdlib.h> <br>
: : #include <sys/types.h> <br>
: : #include <sys/socket.h> <br>
: : #include <netinet/in.h> <br>
: : #include <arpa/inet.h> <br>
: : .................(以下省略) <br>
: <br>
: -- <br>
: <br>
: 也许有一天,他再从海上蓬蓬的雨点中升起, <br>
: 飞向西来,再形成一道江流,再冲倒两旁的石壁, <br>
: 再来寻夹岸的桃花。然而,我不敢说来生,也不敢信来生...... <br>
: ※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 211.167.65.123] <br>
发信人: clown (梧桐叶), 信区: UNP <br>
标 题: Re: TCP重复绑定的疑问? <br>
发信站: UNIX编程 (2001年08月31日14:36:34 星期五), 站内信件 <br>
<br>
我到他寝室看的,没有贴出来。 <br>
他今天贴的就是昨天的改进版本。 <br>
【 在 scz (小四) 的大作中提到: 】 <br>
: 【 在 clown (梧桐叶) 的大作中提到: 】 <br>
: : 昨天晚上看了你的程序,在tcp中如果bind完全相同的ip和port,如果设置了改选项, <br>
: : 确实可以bind成功,但是不能调用listen函数呀。tcp中不调用listen,就不能干活呀 <br>
, <br>
: 不知道你看的是哪个程序。反正如果不关闭,即使设置该标志,完全重复绑定是不可能的 <br>
。 <br>
: 一旦关闭就又是第一种情况了,更没有疑问了。 <br>
: : 因此你这样bind了也没有什么作用。 <br>
: : 所以我觉得即使能够bind,不能启动的话,还是没有什么作用的。 <br>
: : .................(以下省略) <br>
-- <br>
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 202.114.1.61] <br>
</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="54.htm">上一层</a>][<a href="66.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -