⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 121.htm

📁 unix高级编程原吗
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<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 + -