📄 121.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>123</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center"> ● UNIX网络编程 (BM: clown) </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="5.htm">上一层</a>][<a href="122.htm">下一篇</a>]
<hr><p align="left"><small>发信人: ysqcn (岁月无声), 信区: UNP <br>
标 题: TCP重复绑定的疑问? <br>
发信站: UNIX编程 (2001年08月31日09:56:59 星期五), 站内信件 <br>
<br>
UNP上第七章在SO_REUSEADDR时候,其中第二点和第四点陈述到: <br>
第二点:对于TCP我们根本不能启动捆绑相同IP地址和相同端口号的多个服务器,这是完 <br>
全重复的捆绑,也就是是说,我们给第二个服务器设置了SO_REUSEADDR套接口选项,也 <br>
不能在启动绑定199.69,10.2和端口的80服务器后,接着再启动198.69.10.2和端口80的 <br>
另一个服务器。 <br>
<br>
第四点:SO_REUESADDR允许完全重复的捆绑,当一个IP地址和端口绑定到某个套接口上 <br>
时,还允许此IP地址和端口绑定到另外一个套接口上。一般来说,这个特性仅在支持多播 <br>
的系统上才有,这些系统可能还不支持SO_REUSEPORT套接口选项,而且仅对UDP套接口而 <br>
言。 <br>
<br>
上面的第二点说明了TCP不允许启动捆绑相同IP与端口的多个服务器,第四点说明了对UDP <br>
允许重复绑定。 <br>
我们现在可以肯定上面两点说明都是正确的,但是我觉得作者并没有对TCP套接字的重复 <br>
绑定说清楚,**不能启动**绑定相同IP与端口的多个服务器并不表明TCP不能重复绑定相 <br>
同IP与端口号,这里面肯定还有文章可作。 <br>
-- <br>
※ 修改:·ysqcn 於 08月31日13:02:43 修改本文·[FROM: 211.69.197.81] <br>
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 202.114.2.11] <br>
发信人: clown (梧桐叶), 信区: UNP <br>
标 题: Re: TCP重复绑定的疑问? <br>
发信站: UNIX编程 (2001年08月31日10:06:34 星期五), 站内信件 <br>
<br>
昨天晚上看了你的程序,在tcp中如果bind完全相同的ip和port,如果设置了改选项, <br>
确实可以bind成功,但是不能调用listen函数呀。tcp中不调用listen,就不能干活呀, <br>
因此你这样bind了也没有什么作用。 <br>
所以我觉得即使能够bind,不能启动的话,还是没有什么作用的。 <br>
【 在 ysqcn (岁月无声) 的大作中提到: 】 <br>
: UNP上第七章在SO_REUSEADDR时候,其中第二点和第四点陈述到: <br>
: 第二点:对于TCP我们根本不能启动捆绑相同IP地址和相同端口号的多个服务器,这是完 <br>
: 全重复的捆绑,也就是是说,我们给第二个服务器设置了SO_REUSEADDR套接口选项,也 <br>
: 不能在启动绑定199.69,10.2和端口的80服务器后,接着再启动198.69.10.2和端口80的 <br>
: 另一个服务器。 <br>
: 第二点:SO_REUESADDR允许完全重复的捆绑,当一个IP地址和端口绑定到某个套接口上 <br>
: 时,还允许此IP地址和端口绑定到另外一个套接口上。一般来说,这个特性仅在支持多播 <br>
: 的系统上才有,这些系统可能还不支持SO_REUSEPORT套接口选项,而且仅对UDP套接口而 <br>
: 言。 <br>
: 上面的第二点说明了TCP不允许启动捆绑相同IP与端口的多个服务器,第四点说明了对UDP <br>
: .................(以下省略) <br>
-- <br>
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 202.114.1.61] 发信人: ysqcn <br>
(岁月无声), 信区: UNP <br>
标 题: Re: TCP重复绑定的疑问? <br>
发信站: UNIX编程 (2001年08月31日10:10:27 星期五), 站内信件 <br>
<br>
昨天那个程序是没有用,但你看看我下面程序 <br>
【 在 clown (梧桐叶) 的大作中提到: 】 <br>
: 昨天晚上看了你的程序,在tcp中如果bind完全相同的ip和port,如果设置了改选项, <br>
: 确实可以bind成功,但是不能调用listen函数呀。tcp中不调用listen,就不能干活呀, <br>
: 因此你这样bind了也没有什么作用。 <br>
: 所以我觉得即使能够bind,不能启动的话,还是没有什么作用的。 <br>
: 【 在 ysqcn (岁月无声) 的大作中提到: 】 <br>
: : UNP上第七章在SO_REUSEADDR时候,其中第二点和第四点陈述到: <br>
: : 第二点:对于TCP我们根本不能启动捆绑相同IP地址和相同端口号的多个服务器,这是 <br>
完 <br>
: : 全重复的捆绑,也就是是说,我们给第二个服务器设置了SO_REUSEADDR套接口选项,也 <br>
: : 不能在启动绑定199.69,10.2和端口的80服务器后,接着再启动198.69.10.2和端口80的 <br>
: : 另一个服务器。 <br>
: .................(以下省略) <br>
-- <br>
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 202.114.2.11] 发信人: scz ( <br>
小四), 信区: UNP <br>
标 题: Re: TCP重复绑定的疑问? <br>
发信站: UNIX编程 (2001年08月31日13:22:27 星期五), 站内信件 <br>
<br>
<br>
【 在 clown (梧桐叶) 的大作中提到: 】 <br>
: 昨天晚上看了你的程序,在tcp中如果bind完全相同的ip和port,如果设置了改选项, <br>
: 确实可以bind成功,但是不能调用listen函数呀。tcp中不调用listen,就不能干活呀, <br>
<br>
不知道你看的是哪个程序。反正如果不关闭,即使设置该标志,完全重复绑定是不可能的。 <br>
一旦关闭就又是第一种情况了,更没有疑问了。 <br>
<br>
: 因此你这样bind了也没有什么作用。 <br>
: 所以我觉得即使能够bind,不能启动的话,还是没有什么作用的。 <br>
: 【 在 ysqcn (岁月无声) 的大作中提到: 】 <br>
: : UNP上第七章在SO_REUSEADDR时候,其中第二点和第四点陈述到: <br>
: : 第二点:对于TCP我们根本不能启动捆绑相同IP地址和相同端口号的多个服务器,这是 <br>
完 <br>
: : 全重复的捆绑,也就是是说,我们给第二个服务器设置了SO_REUSEADDR套接口选项,也 <br>
: : 不能在启动绑定199.69,10.2和端口的80服务器后,接着再启动198.69.10.2和端口80的 <br>
: : 另一个服务器。 <br>
: .................(以下省略) <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日13:44:17 星期五), 站内信件 <br>
<br>
: 不知道你看的是哪个程序。反正如果不关闭,即使设置该标志,完全重复绑定是不可能的 <br>
。 <br>
: 一旦关闭就又是第一种情况了,更没有疑问了。 <br>
<br>
这个程序是个没有用的程序,虽然不是关闭套接字,但它的状态是TCP_CLOSE。很简单, <br>
如下:(运行后十个套接字都绑定,但在bind后如果加listen就不能重复绑定) <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>
int main(void) <br>
{ <br>
int fd[10]; <br>
int i,optval=1; <br>
struct sockaddr_in bindaddr; <br>
struct sockaddr cliaddr; <br>
socklen_t cliaddrlen; <br>
<br>
bindaddr.sin_family=AF_INET; <br>
bindaddr.sin_port=htons(2222); <br>
inet_pton(AF_INET,"192.168.1.79",&bindaddr.sin_addr); <br>
<br>
for ( i=0;i<10;i++) <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -