1 / 36
文档名称:

网络socket编程指南.doc

格式:doc   页数:36页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

网络socket编程指南.doc

上传人:xxj16588 2016/3/19 文件大小:0 KB

下载得到文件列表

网络socket编程指南.doc

相关文档

文档介绍

文档介绍:网络 socket 编程指南网络 socket 编程指南----------------------------------------------------------- --------------------- 读者对象这个文档是一个指南, 而不是参考书。如果你刚开始 socket 编程并想找一本入门书,那么你是我的读者。但这不是一本完全的 socket 编程书。----------------------------------------------------------- --------------------- 平台和编译器这篇文档中的大多数代码都在 Linux 平台 PC 上用 GNU 的 gcc 成功编译过。而且它们在 HPUX 平台上用 gcc 也成功编译过。但是注意,并不是每个代码片段都独立测试过。----------------------------------------------------------- --------------------- 目录: 1) 什么是套接字? 2) 套接字的两种类型 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) 和其它程序通讯的方式。什么?你也许听到一些 Uni x 高手(hacker) 这样说过: “呀, Unix 中的一切就是文件! ”那个家伙也许正在说到一个事实: Unix 程序在执行任何形式的 I/O 的时候, 程序是在读或者写一个文件描述符。一个文件描述符只是一个和打开的文件相关联的整数。但是( 注意后面的话), 这个文件可能是一个网络连接, FIFO , 管道, 终端, 磁盘上的文件或者什么其它的东西。 Unix 中所有的东西就是文件! 所以, 你想和 上别的程序通讯的时候, 你将要使用到文件描述符。你必须理解刚才的话。现在你脑海中或许冒出这样的念头:“那么我从哪里得到网络通讯的文件描述符呢? ”,这个问题无论如何我都要回答:你利用系统调用 socket() , 它返回套接字描述符(socket descriptor) , 然后你再通过它来进行 send() 和 recv() 调用。“但是... ”, 你可能有很大的疑惑,“如果它是个文件描述符, 那么为什么不用一般调用 read() 和 write() 来进行套接字通讯? ”简单的答案是:“你可以使用!”。详细的答案是: “你可以,但是使用 send() 和 recv() 让你更好的控制数据传输。”存在这样一个情况: 在我们的世界上, 有很多种套接字。有 DARPA 地址( 套接字) ,本地节点的路径名(Unix 套接字), CCITT 地址( 你可以将 套接字完全忽略)。也许在你的 Unix 机器上还有其它的。我们在这里只讲第一种: 套接字。----------------------------------------------------------- --------------------- 套接字的两种类型什么意思?有两种类型的 套接字?是的。不, 我在撒谎。其实还有很多, 但是我可不想吓着你。我们这里只讲两种。除了这些, 我打算另外介绍的"Raw Sockets" 也是非常强大的,很值得查阅。那么这两种类型是什么呢?一种是"Stream Sockets" (流格式) ,另外一种是"Datagram Sockets" (数据包格式) 。我们以后谈到它们的时候也会用到"SOCK_STREAM" 和"SOCK_DGRAM" 。数据包套接字有时也叫“无连接套接字”( 如果你确实要