- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c语言SOCKt编程指南
平台和编译器 这篇文档中的大多数代码都在 Linux 平台PC 上用 GNU 的 gcc 成功编译过。而且它们在 HPUX平台 上用 gcc 也成功编译过。但是注意,并不是每个代码片段都独立测试过。
目录:
1 什么是套接字?
2 Internet 套接字的两种类型
3 网络理论
4 结构体
5 本机转换
6 IP 地址和如何处理它们
7 socket 函数
8 bind 函数
9 connect 函数
10 listen 函数
11 accept 函数
12 send 和recv 函数
13 sendto 和recvfrom 函数
14 close 和shutdown 函数
15 getpeername 函数
16 gethostname 函数
17 域名服务(DNS)
18 客户-服务器背景知识
19 简单的服务器
20 简单的客户端
21 数据报套接字Socket
22 阻塞
23 select --多路同步I/O
24 参考资料
什么是 socket? 你经常听到人们谈论着 “socket”,或许你还不知道它的确切含义。现在让我告诉你:它是使用 标准Unix 文件描述符 file descriptor 和其它程序通讯的方式。什么?你也许听到一些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 套接字?是的。不,我在撒谎。其实还有很多,但是我可不想吓着你。我们这里只讲两种。除了这些, 我打算另外介绍的 Raw Sockets 也是非常强大的,很值得查阅。
那么这两种类型是什么呢?一种是Stream Sockets(流格式),另外一种是Datagram Sockets(数据包格式)。我们以后谈到它们的时候也会用到 SOCK_STREAM 和 SOCK_DGRAM。数据报套接字有时也叫“无连接套接字” 如果你确实要连接的时候可以用connect 。 流式套接字是可靠的双向通讯的数据流。如果你向套接字按顺序输出“1,2”,那么它们将按顺序“1,2”到达另一边。它们是无错误的传递的,有自己的错误控制,在此不讨论。 有什么在使用流式套接字?你可能听说过 telnet,不是吗?它就使用流式套接字。你需要你所输入的字符按顺序到达,不是吗?同样,WWW浏览器使用的 HTTP 协议也使用它们来下载页面。实际上,当你通过端口80 telnet 到一个 WWW 站点,然后输入 “GET pagename” 的时候,你也可以得到 HTML 的内容。为什么流式套接字可以达到高质量的数据传输?这是因为它使用了“传输控制协议 The Transmission Control Protocol ”,也叫 “TCP” 请参考 RFC-793 获得详细资料。 TCP 控制你的数据按顺序到达并且没有错误。你也许听到 “TCP” 是因为听到过 “TCP/IP”。这里的 IP 是指“Internet 协议” 请参考 RFC-791。 IP 只是处理 Internet 路由而已。 那么数据报套接字呢?为什么它叫无连接呢?为什么它是不可靠的呢?有这样
您可能关注的文档
最近下载
- 【2025秋】人教版七年级道德与法治上册教学计划(及进度表).docx
- 一例卵圆孔未闭患者的护理查房.pptx VIP
- 地球物理测井方法(高杰)B 2-2 声波幅度测井.ppt VIP
- 宝钢广东湛江钢铁基地项目通用图集《钢梯和平台栏杆》(zj-011-2014).pdf VIP
- 2020新苏教版科学四年级上册--6.不同的运动.pptx VIP
- 行车日常维护保养点检记录表.docx VIP
- 第四章《新时代中国特色社会主义思想概论》2023版知识点及练习题.docx VIP
- 毕业设计7采煤毕业设计.doc VIP
- 天然气管网经济可行性分析.docx
- 《计算机基础与应用(Office 和 WPS Office通用 )》课件 项目3、4 计算机网络配置与应用、 图文编辑与排版.pptx
文档评论(0)