C++socket编程基础(理论篇)
来源:优易学  2010-1-15 9:22:29   【优易学:中国教育考试门户网】   资料下载   IT书店

  对于SOCKET在这里我不想究其历史,我只想说其时它是一种进程通讯的方式,简言之就是调用这个网络库的一些API函数就能实现分布在不同主机的相关进程之间的数据交换.

  SOCKET中首先我们要理解如下几个定义概念:

  一是IP地址:IP Address我想很容易理解,就是依照TCP/IP协议分配给本地主机的网络地址,就向两个进程要通讯,任一进程要知道通讯对方的位置,位置如何来确定,就用对方的IP

  二是端口号:用来标识本地通讯进程,方便OS提交数据.就是说进程指定了对方进程的网络IP,但这个IP只是用来标识进程所在的主机,如何来找到运行在这个主机的这个进程呢,就用端口号.

  三是连接:指两个进程间的通讯链路.

  四是半相关:网络中用一个三元组可以在全局唯一标志一个进程:

  (协议,本地地址,本地端口号)

  这样一个三元组,叫做一个半相关,它指定连接的每半部分。

  五是全相关

  一个完整的网间进程通信需要由两个进程组成,并且只能使用同一种高层协议。也就是说,不可能通信的一端用TCP协议,而另一端用UDP协议。因此一个完整的网间通信需要一个五元组来标识:

  (协议,本地地址,本地端口号,远地地址,远地端口号)

  这样一个五元组,叫做一个相关(association),即两个协议相同的半相关才能组合成一个合适的相关,或完全指定组成一连接。

  客户/服务器模式

  在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器模式(Client/Server model),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。客户/服务器模式的建立基于以下两点:首先,建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。其次,网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步,这就是基涌纪纪户/服务器模式的TCP/IP。

  客户/服务器模式钥纪纪作过程中采取的是主动请求方式:

  首先服务器方要先启动,并根据请求提供相应服务:

  1. 打开一通信通道并告知本地主机,它愿意在某一公认地址上(周知口,如FTP为21)接收客户请求;

  2. 等待客户请求到达该端口;

  3. 接收到重复服务请求,处理该请求并发送应答信号。接收到并发服务请求,要激活一新进程来处理这个客户请求(如UNIX系统中用fork、exec)。新进程处理此客户请求,并不需要对其它请求作出应答。服务完成后,关闭此新进程与客户的通信链路,并终止。

  4. 返回第二步,等待另一客户请求。

  5. 关闭服务器

[1] [2] [3] [4] 下一页

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训