字体
第(3/4)页
关灯
   存书签 书架管理 返回目录
系,又不存在共

    享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据jiāo换提供同

    步,这就是基于客户机/服务器模式的TCP/IP。

    客户机/服务器模式在cāo作过程中采取的是主动请求方式,具体cāo作步骤如下。

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

    ? 打开一通信通道并告知本地主机,它愿意在某一端口上接收客户请求。

    ? 等待客户请求到达该端口。

    ? 接收到重复服务请求,处理该请求并发送应答信号。接收到并发服务请求,要激活一

    新进程来处理这个客户请求。新进程处理此客户请求,并不需要对其他请求作出应答。

    服务完成后,关闭此进程与客户的通信链路,并终止该进程。

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

    ? 关闭服务器。

    客户方的主要cāo作步骤如下:

    ? 打开一通信通道,并连接到服务器所在主机的指定端口。

    ? 向服务器发服务请求报文,等待并接收应答;继续提出请求。

    ? 请求结束后关闭通信通道并终止。

    在客户机/服务器编程模型下,又分为面向连接的编程模型和无连接的编程模型。

    ? 面向连接的编程模型:当服务器程序的套接字创建并初始化完毕时,它先进入休眠状

    态,直到有客户机向该服务器程序提出连接请求。这时,服务器程序被“唤醒”并开

    始响应客户机提出的连接请求,双方协商数据由谁来接收和由谁来发送。在数据传输

    完毕时,双方再分别关闭连接并释放因创建套接字而占用的资源。

    ? 无连接的编程模型:在传输数据前,不需要事先进行连接,有数据就进行发送,但却

    不对数据的顺序和正确xìng负责。相对于面向连接的模型,它的传输效率较高,但准确

    率稍低。

    11.2.2 建立套接字对象

    函数socket()可以创建一个socket 对象,socket()函数的原型如下:

    SOCKET socket(int af, int type, int protocol);

    各参数意义如下。

    ? af:协议的地址家族。在Windows cāo作系统中,它的取值只能是AF_INET,表示该套

    接字在Internet 域中进行通信。

    ? type:套接字类型。当第一个参数af 取值为AF_INET 时,它只有3 种取值,如表11-1

    所示。

    ? protocol:指定网络协议。具体取值如表11-2 所示。

    如果创建成功,则返回一个创建好的套接字,如果创建失败,则返回INVALID_SOCKET,

    详细信息可以通过调用函数WSAGetLastError()查看错误信息。

    枫叶文学网www.fywxw.com

    第11 章 网络编程

    ·283·

    表11-1 套接字类型取值及说明

    取值 类型 说明

    SOCK_STREAM TCP

    面向连接、可靠的数据传输服务,数据无差错发送,且按

    发送顺序接收;数据被看作是字节流,无长度限制

    SOCK_DGRAM UDP

    无连接服务。数据
上一页 目录 下一页