socket,获取本地端口.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
socket,获取本地端口 篇一:socket和端口理解 socket和端口理解.txt爱一个人很难,恨一个人更难,又爱又恨的人最难。爱情永远不可能是天平,想在爱情里幸福就要舍得伤心。有些烦恼是我们凭空虚构的,而我们却把它当成真实去承受。socket和端口理解2009-05-1900:03// 一个socket句柄代表两个地址对“本地ip:port”--“远程ip:port” 在windows下叫句柄,在linux下叫文件描述符 socket为内核对象,由操作系统内核来维护其缓冲区,引用计数,并且可以在多个进程中使用。 至于称它为“句柄”“文件描述符”都是一样的 //http:///aezealer/blog/item/3b1582f4909da9e77609d795.html转载于 首先,随着时间的推移,我会不断地向这篇里面加东西,知道我认为应该结束了为止。这篇文档实际上是我的学习小结的一部分,所以如果有人能够来信指出其中的错误或不足,那我可是感激淋涕了。 我假定读者已经对于socket连接的建立过程和各种状态转换比较熟悉了,因为这篇文档的目的是澄清概念,而不是介绍概念。 在使用socket编程时,我们都知道在网络通信以前首先要建立连接,而连接的建立是通过对socket的一些操作来完成的。那么,建立连接的过程大致可以分为以下几步: 1.建立socket套接字。 2.给套接字赋予地址,这个地址不是通常的网络地址的概念。 3.建立socket连接。 1.建立socket套接字。 使用socket建立套接字的时候,我们实际上是建立了一个数据结构。这个数据结构最主要的信息是指定了连接的种类和使用的协议,此外还有一些关于连接队列操作的结构字段(这里就先不涉及他们了)。 当我们使用socket函数以后,如果成功的话会返回一个int型的描述符,它指向前面那个被维护在内核里的socket数据结构。我们的任何操作都是通过这个描述符而作用到那个数据结构上的。这就像是我们在建立一个文件后得到一个文件描述符一样,对文件的操作都是通过文件描述符来进行的,而不是直接作用到inode数据结构上。我之所以用文件描述符举例,是因为socket数据结构也是和inode数据结构密切相关,它不是独立存在于内核中的,而是位于一个vfsinode结构中。所以,有一些比较抽象的特性,我们可以用文件操作来不恰当的进行类比以加深理解。 如前所述,当建立了这个套接字以后,我们可以获得一个象文件描述符那样的套接字描述符。就象我们对文件进行操作那样,我们可以通过向套接字里面写数据将数据传送到我们指定的地方,这个地方可以是远端的主机,也可以是本地的主机。如果你有兴趣的话,还可以用socket机制来实现ipc,不过效率比较低,试试也就行了(我没有试过)。 2.给套接字赋予地址。 依照建立套接字的目的不同,赋予套接字地址的方式有两种:服务器端使用bind,客户端使用connetc。 bind: 我们都知道,只要使用ip,prot就可以区分一个tcp/ip连接(当然这个连接指的是一个连接通道,如果要区分特定的主机间的连接,还需要第三个属性hostname)。 我们可以使用bind函数来为一个使用在服务器端例程中的套接字赋予通信的地址和端口。在这里我们称通信的ip地址和端口合起来构成了一个socket地址,而指定一个socket使用特定的ip和port组合来进行通行的过程就是赋予这个socket一个地址。 要赋予socket地址,就得使用一个数据结构来指明特定的socket地址,这个数据结构就是structsockaddr。对它的使用我就不说了,因为这篇文档的目的是澄清概念而不是说明使用方法。bind函数的作用就是将这个特定的标注有socket地址信息的数据结构和socket套接字联系起来,即赋予这个套接字一个地址。但是在具体实现上,他们两个是怎么联系在一起的,我还不知道。 一个特定的socket的地址的生命期是bind成功以后到连接断开前。你可以建立一个socket数据结构和socket地址的数据结构,但是在没有bind以前他们两个是没有关系的,在bind以后他们两个才有了关系。这种关系一直维持到连接的结束,当一个连接结束时,socket数据结构和socket地址的数据结构还都存在,但是他们两个已经没有关系 了。如果你要是用这个套接字在socket地址上重新进行连接时,需重新bind他们两个。再注明一次,我说的这个连接是一个连接通道,而不是特定的主机之间的连接。 bind指定的ip通常是本地ip(一般不特别指定,而使用inaddr_any来声明),而最主要的作用是指定端口。在服务器端的socket进行了bind以后就是用listen来在这个socket地址上准备进行连接。 connect

文档评论(0)

183****7083 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档