《Linux Socket编程(不限Linux)》.pdf

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Linux Socket编程(不限Linux)》.pdf

Socket 编程 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏 览器浏览网页时,浏览器的进程怎么与 web 服务器通信的?当你用 QQ 聊天时,Q Q 进程怎么与服务器或你好友所在的 QQ 进程通信?这些都得靠 socket?那什么 是 socket?socket 的类型有哪些?还有 socket 的基本函数,这些都是本文想介 绍的。本文的主要内容如下: 1、网络中进程之间如何通信?  2、Socket 是什么?  3、socket 的基本操作  3.1、socket()函数  3.2、bind()函数  3.3、listen()、connect()函数  3.4、accept()函数  3.5、read()、write()函数等  3.6、close()函数  4、socket 中TCP 的三次握手建立连接 详解  5、socket 中TCP 的四次握手释放连接 详解  6、一个例子(实践一下)  7、留下一个问题,欢迎大家回帖回 答!!! 1、网络中进程之间如何通信?  本地的进程间通信(IPC)有很多种方 式,但可以总结为下面 4 类:  消息传递(管道、FIFO、消息队列)  同步(互斥量、条件变量、读写锁、文 件和写记录锁、信号量)  共享内存(匿名的和具名的)  远程过程调用(Solaris 门和Sun RPC) 但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要 解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程 PID 来唯一标识一个进程,但是在网络中这是行不通的。其实 TCP/IP 协议族已 经帮我们解决了这个问题,网络层的―ip 地址‖可以唯一标识网络中的主机,而传 输层的―协议+端口‖可以唯一标识主机中的应用程序(进程)。这样利用三元组 (ip 地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以 利用这个标志与其它进程进行交互。 使用 TCP/IP 协议的应用程序通常采用应用编程接口:UNIX BSD 的套接 字(socket )和UNIX System V 的TLI (已经被淘汰),来实现网络进程之间 的通信。就目前而言,几乎所有的应用程序都是采用 socket,而现在又是网络时 代,网络中进程通信是无处不在,这就是我为什么说―一切皆 socket‖。 2、什么是 Socket ? 上面我们已经知道网络中的进程是通过 socket 来通信的,那什么是 socket 呢?socket 起源于 Unix,而 Unix/Linux 基本哲学之一就是―一切皆文件‖,都可 以用―打开 open – 读写 write/read – 关闭 close‖模式来操作。我的理解就 是 Socket 就是该模式的一个实现,socket 即是一种特殊的文件,一些 socket 函 数就是对其进行的操作(读/写 IO、打开、关闭),这些函数我们在后面进行介 绍。 socket 一词的起源 在组网领域的首次使用是在 1970 年 2 月 12 日发布的文献IETF RFC33 中 发现的,撰写者为 Stephen Carr、Steve Crocker 和 Vint Cerf 。根据美国计算 机历史博物馆的记载,Croker 写道:―命名空间的元素都可称为套接字接口。一 个套接字接口构成一个连接的一端,而一个连接可完全由一对套接字接口规定。‖ 计算机历史博物馆补充道:―这比 BSD 的套接字接口定义早了大约 12 年。‖ 3、socket 的基本操作 既然 socket 是―open—write/read—close‖模式的一种实现,那么 socket 就 提供了这些操作对应的函数接口。下面以 TCP 为例,介绍几个基本的 socket 接 口函数。 3.1、socket()函数 int socket(int domain, int type, int protocol);

文档评论(0)

wgvi + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档