Sket原理与编程基础.docVIP

  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文档。上传文档
查看更多
Sket原理与编程基础.doc

Socket原理与编程基础 :carter 时间:2011-1 卜22 22:52:24.0 一、Socket 简介 Socket是进程通讯的一种方式,即调用这个网络库的一些APT函数实现分布在不M主机的相关进程之间的数据交换。 几个定义: (1) IP地址:即依照TCP/IP协议分配给本地主机的网络地址,两个进程要通讯,任一进程首先耍知道通讯对方的位置,即对方 (2) 端LJ号:用来辨别本地通讯进程,一个本地的进程在通讯时均会占用一个端LJ号,不同的进程端LJ号不同,因此在通讯前4 (3) 连接:指W个进程间的通讯链路。 (4) 半相关:网络中用一个三元组可以在全局唯一标志一个进程: (协议,木地地址,木地端口号) 这样一个三元组,叫做一个半相关,它指定连接的每半部分。 U)全相关:一个完整的网间进程通信需要由两个进程组成,并且只能使用同-?种商层协议。也就是说,不可能通信的一端用T 需要一个五元组来标识: (协议,本地地址,本地端口号,远地地址,远地端口号) 这样一个五元组,叫做一个相关(association),即两个协议相同的半相关方能组合成一个合适的相关,或完全指定组成一连朽 二、客户/服务器模式 在TCP/IP网络应用中,通信的W个进程间相互作用的主要模式是容户/服务器(Client/Server,C/S)模式,即容户向服务器发 户/服务器校式的建立?于以下两点: (1) 首先,建立网络的起因足网络中软硬件资源、运算能力和信息不均等,需耍共亨,从而造就拥有众多资源的主机提供服务, (2) 其次,M间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享lAl存缓冲区,因此需耍一种机制为希望 就是基于客户/服务器模式的TCP/IP。 服务器端: 其过程是首先服务器方要先冶动,并根据请求提供相应服务: (1) 打开一通信通道并告知木地主机,它愿意在某一公认地址上的某端口(如FTP的端口可能为21)接收客户请求; (2) 等待客户请求到达该端门; (3) 接收到客户端的服务治求时,处理该治求并发送应答信号。接收到并发服务治求,要激活一新进程来处理这个客户治求(女I 并不需要对其它诸求作出应答。服务完成后,关闭此新进程与容户的通信链路,并终止。 (4) 返回第(2)步,等待另一客户请求。 (5) 关闭服务器 客户端: (1) 打开一通信通道,并连接到服务器所在主机的特定端Lb (2) 向服务器发服务请求报文,等待并接收应答:继续提出请求 (3) 请求结束后关闭通信通道并终止。 从上面所描述过程町知: 客户与服务器进程的作用是非对称的,因此代码不同。 服务器进程一般是先启动的。只要系统运行,该服务进程一直存在,直到正常或强迫终止。 介绍完基础知识,下Uf就介绍一些API函数: 创建套接字——socket () 应用程序在使用套接字前,首先必须拥有一个套接字,系统调用socket ()向应用程序提供创建套接字的乎段,艽调用格式如下: SOCKET PASCAL FAR socket (int af, int type, int protocol): 该调用要接收三个参数:af、type、protocol。参数af指定通信发生的区域:AFJJNIX、AF_INET、AF_NS等,而DOS、WINDOWS ?| 族相同。参数type描述要建立的套接字的类型。这里分三种: 一是TCP流式套接字(SOCK STREAM)提供了一个而向连接、可靠的数据传输服务,数据无差错、无ifi复地发送,且按发送顺. 字节流,无长度限制。文件传送协议(FTP)即使用流式套接字。 二是数据报式套接字(SOCK_DGRAM)提供丫一个无连接服务。数据包以独立包形式被发送,不提供无错保证,数据可能丢失自 据报式套接字。 三是原始式套接字(SOCK RAW)该接口允许对较低层协议,如IP、ICMP直接访问。常用于检验新的I办议实现或访问现有服务 参数protocol说明该套接字使用的特定协议,如果调用者不希望特别指定使用的协议,则置为0,使用默认的连接模式。根据这 时返回一个整型袞接字号。因此,socket ()系统调川实际上指定丫相关五元组中的“协议”这一元。 指定本地地址 bind () 当一个套接字用socket ()创建后,存在一个名字空间(地址族),但它没有被命名。bind()将套接字地址(包括本地主机地址和本 予套接字,以指定本地半相关。其调用格式如下: int PASCAL I;AR bind (SOCKET s, const struct sockaddr I;AR * name, int namelen): 参数s是由socketO调用返回的并且未作连接的套接字描述符(套接字号)。参数name是赋给套接字s的本地地址(名字),

文档评论(0)

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

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

1亿VIP精品文档

相关文档