网络编程基础35482.pptVIP

  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文档。上传文档
查看更多
网络编程基础35482.ppt

TCP网络编程基础 TCP协议是TCP/IP协议中很重要的一个协议,它由于传输的稳定性,在很多程序中都在使用,例如HTTP、FTP等协议都是在TCP的基础上进行构建的。本章介绍TCP套接字的编程基础知识,主要包含如下内容: 套接字编程的基础知识的部分,介绍套接字编程中经常使用的套接字地址结构,对内核和应用层之间的内存数据传递方式进行了简单的介绍。 TCP网络编程的流程部分,简单介绍TCP套接字服务器、客户端的编程框架,对函数socket()、bind()、listen()、accept()、connect()、close()函数进行了介绍,并提及如何使用read()和write()函数进行数据的读取和发送。 套接字基础 Socket 的历史 在80 年代早期,远景研究规划局(Advanced Research Projects Agency, ARPA)资助了佳利福尼亚大学伯克利分校的一个研究组,让他们将TCP/IP 软件移植到UNIX 操作系统中,并将结果提供给其他网点。 作为项目的一部分,设计者们创建了一个接口,应用进程使用这个接口可以方便的进行通信。他们决定,只要有可能就使用以有的系统调用,对那些不能方便的容入已有的函数集的情况,就再增加新的系统调用以支持TCP/IP 功能。 套接字基础 这样做的结果就出现了插口接口(Berkeley Socket),这个系统被称为Berkeley UNIX或BSD UNIX。(TCP/IP 首次出现在BSD 4.1 版本release 4.1 of Berkeley SoftwareDistribution)。 由许多计算机厂商,都采用了Berkeley UNIX,于是许多机器上都可以使用Socket 了。这样,Socket 接口就被广泛使用,到现在已经成为事实上的标准。 Socket 的英文原意就是“孔”或“插座”,将电话系统与面向连接的Socket 机制相比,有着惊人相似的地方。 以一个国家级的电话网为例。电话的通话双方相当于相互通信的两个进程;任何用户在通话之前,首先要占有一部电话机,相当于申请一个Socket 号;同时要知道对方的电话号码,相当于对方有一个Socket。双方通话的过程,是向电话机发出信号和从电话机接受信号的过程,相当于向Socket 发送数据和从Socket 接受数据。通话结束后,一方挂起电话机,相当于关闭Socket,撤消连接。 套接字基础 Linux系统是通过提供套接字(socket)来进行网络编程的. Socket技术提供了在TCP/IP模型各个层上的编程支持。 该技术是在内核处理收到的各层协议数据,然后应用程序以文件的方式接受内核传来的数据。 应用程序的文件处理是通过一个文件句柄来进行的。 套接字基础 网络程序通过socket和其它几个函数的调用,会返回一个 通讯的文件描述符, 我们可以将这个描述符看成普通的文件的描述符来操作, 这就是linux的设备无关性的好处.我们可以通过向描述符读写操作实现网络之间的数据交流. 套接字基础 Socket 描述符 使用UNIX 的黑客高手有这么一句话:“恩,在UNIX 系统中,任何东西都是一个文件。”这句话描述了这样一个事实:在UNIX 系统中,任何对I/O 的操作,都是通过读或写一个文件描述符来实现的。 一个文件描述符只是一个简单的整形数值,代表一个被打开的文件(这里的文件是广义的文件,并不只代表不同的磁盘文件,它可以代表一个网络上的连接,一个先进先出队列,一个终端显示屏幕,以及其他的一切)。在UNIX 系统中任何东西都是一个文件!! 所以如果你想通过Internet 和另外一个程序通讯的话,你将会是通过一个文件来描述符实现的。 套接字基础 套接字基础 常用的socket: 流式套接字: 它提供基于TCP协议的双向、可靠、有序且不重复的无记录边界的数据流。 数据报套接字: 它提供基于UDP协议的双向数据流,但不一定可靠、有序和不重复。 原始套接字: 它提供网络下层通信协议的直接访问。一般用于开发新的网络层协议,如新的IP协议等。 通用套接字地址结构 1.struct sockaddr 这个结构用来存储套接字地址。 数据定义: struct sockaddr { unsigned short sa_family; /* address族, AF_xxx */ char sa_data[14]; /* 14 bytes的协议地址*/ }; sa_family 一般来说,都是“AF_INET”。 sa_data 包含了一些远程电脑的地址、端口和套接字的数目,它里面的数据是杂溶在一切的。 实际使用的套接字地址结构 为了处理struct sockaddr, 程序员建立了另外一个相似的结构struct sockaddr_

文档评论(0)

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

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

1亿VIP精品文档

相关文档