- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络soc的ket编程指南
网络socket编程指南
介绍
Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟
上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的
结构而不知所措?等等…
好在我已经将这些事完成了,我将和所有人共享我的知识了。如果你了解 C
语言并想穿过网络编程的沼泽,那么你来对地方了。
读者对象
这个文档是一个指南,而不是参考书。如果你刚开始 socket 编程并想找一
本入门书,那么你是我的读者。但这不是一本完全的 socket 编程书。
平台和编译器
这篇文档中的大多数代码都在 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
文档评论(0)