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

📄 65.htm

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