Interne Sockets 网络编程指南.docVIP

  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文档。上传文档
查看更多
Interne Sockets 网络编程指南

Internet Sockets 网络编程指南 介绍 Hey! Socket 编程让你沮丧吗?从 man pages 中很难得到有用的信息吗?你想跟上时代去做一做 Internet 程序,但是为你在调用 connect() 前的 bind() 的结构而愁眉不展?… 好了,我现在已经来了,我将和所有人共享我的知识了。如果你了解 C 语言并想穿过网络编程的沼泽,那么你来对地方了。 读者 这个文档是写成一个指南,而不是参考书。如果你刚开始 socket 编程并想找一本入门书,那么你是我的读者。这可不是一本的 socket 编程书。 平台和编译器 这篇文章中的大多数代码都在一台 Linux PC 上用 GNU 的 gcc 成功编译过。而且他们在一台 HPUX 上用 gcc 也成功编译过。但是注意,并不是每个代码片段都独立测试过。 目录: 什么是套接口? Internet 套接口的两种类型 网络理论 struct--要么了解他们,要么等异形入侵地球 Convert the Natives! IP 地址和如何处理他们 socket()--得到文件描述符! bind()--我们在哪个端口? connect()--Hello! listen()--有人给我打电话吗? accept()--Thank you for calling port 3490. send() 和 recv()--Talk to me, baby! sendto() 和 recvfrom()--Talk to me, DGRAM-style close() 和 shutdown()--滚开! getpeername()--你是谁? gethostname()--我是谁? DNS--你说“白宫”,我说 00 客户-服务器背景知识 简单的服务器 简单的客户端 数据报 Socket 阻塞 select()--多路同步 I/O,酷! 参考资料 Disclaimer and Call for Help 什么是 socket? 你始终听到人们谈论着 socket,而你不知道他的确切含义。那么,现在我告诉你:他是使用 Unix 文件描述符 (fiel descriptor) 和其他程序通讯的方式。 什么? Ok--你也许听到一些 Unix 高手 (hacker) 这样说:“呀,Unix 中所有的东西 就是文件!”那个家伙也许正在说到一个事实:Unix 程序在执行任何形式的 I/O 的时候,程序是在读或者写一个文件描述符。一个文件描述符只是一个和打开的文件相关联的整数。但是(注意后面的话),这个文件可能是一个网络连接,FIFO,管道,终端,磁盘上的文件或者什么其他的东西。Unix 中所有的东西是文件!因此,你想和 Internet 上别的程序通讯的时候,你将要通过文件描述符。最好相信刚才的话。 现在你脑海中或许冒出这样的念头:“那么我从哪里得到网络通讯的文件描述符呢,聪明人?”无论如何,我要回答这个问题:你利用系统调用 socket()。他返回套接口描述符 (socket descriptor),然后你再通过他来调用 send() 和 recv()。 “但是...”,你可能现在叫起来,“如果他是个文件描述符,那么为什么不用一般的调用 read() 和 write() 来通过套接口通讯?”简单的答案是:“你可以使用一般的函数!”。详细的答案是:“你可以,但是使用 send() 和 recv() 让你更好的控制数据传输。” 有这样一个事实:在我们的世界上,有很多种套接口。有 DARPA Internet 地址 (Internet 套接口),本地节点的路径名 (Unix 套接口),CCITT X.25 地址 (你可以完全忽略 X.25 套接口)。也许在你的 Unix 机器上还有其他的。我们在这里只讲第一种:Internet 套接口。 Internet 套接口的两种类型 什么意思?有两种 Internet 套接口?是的。不,我在撒谎。其实还有很多,但是我可不想吓着你。我们这里只讲两种。 Except for this sentence, where Im going to tell you that Raw Sockets are also very powerful and you should look them up. 好了,好了。那两种类型是什么呢?一种是 Stream Sockets,另外一种是 Datagram Sockets。我们以后谈到他们的时候也会用到 SOCK_STREAM 和 SOCK_DGRAM。数据报套接口有时也叫“无连接套接口”(如果你确实要连接的时候用 connect()。)

文档评论(0)

womei + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档