字体
第(1/4)页
关灯
   存书签 书架管理 返回目录
    接字。

    ? ncom:要连接服务器的套接字地址结构。

    ? ncomlen:ncom 参数的长度。

    如果连接成功,此函数返回0;失败则返回SOCKET_ERROR。

    对于服务器来说,当客户机发来连接请求后,服务器要调用accept()函数来响应对方的连

    接请求,该函数原型如下:

    SOCKET accept(SOCKET s, struct sockaddr FAR *addr, int FAR *addrlen);

    各参数意义如下。

    ? s:处在jiān tīng(下小节介绍)模式下的套接字。

    ? addr:在函数调用过程中被填充发出连接请求的客户机的IP 地址信息。

    ? addrlen:addr 参数的长度。

    如果成功,则返回一个新的套接字,它对应于已经接受的那个客户机连接。对于该客户

    机所有的后续cāo作,都使用这个新的套接字。原来的套接字则仍处于jiān tīng模式,继续接受其

    他客户机的连接。如果失败,则返回INVALID_SOCKET。

    11.2.5 jiān tīngsocket

    对于服务器端来说,在它接受客户机的连接之前,首先要jiān tīng。只有进入了jiān tīng模式,

    才能接受来自客户机的连接。这一点可以通过listen()函数实现,它的原型如下:

    int listen(SOCKET s, int backlog);

    各参数意义如下。

    ? s:进行jiān tīng的套接字。

    ? backlog:正在等待连接的最大队列的长度。如果backlog 的值为3,有4 个客户机同

    时发出连接请求,则前3 个会放在等待连接队列中,最后一个将被忽略。

    如果函数成功,则返回0;否则返回SOCKET_ERROR。

    11.2.6 数据传输

    当客户机和服务器的连接建立起来以后,便可以进行数据的传输。数据的传输是网络通

    信的最终目的,前面所作的工作就是为了客户机可以和服务器传输数据。数据传输又包括数

    据发送和数据接收。

    1.数据发送

    数据发送是通过send()函数来实现的,它的原型如下:

    int send(SOCKET s, const char FAR *buf, int len, int flags);

    各参数意义如下。

    ? s:已经建立连接的套接字。

    ? buf:字符缓冲区,区内包含即将发送的数据。

    ? len:缓冲区内的字符数目。

    ? flags:指定数据传输方式,取值可为0、MSG_DONTROUTE 和MSG_OOB,或者是

    枫叶文学网www.fywxw.com

    第11 章 网络编程

    ·285·

    这些取值进行按位或运算的结果。其中,0 表示无特殊行为;MSG_DONTROUTE 表

    示传输层不要将它发出的包路由出去;MSG_OOB 表示数据应该被带外发送。

    如果发送成功,则返回发送的字节数,如果失败则返回SOCKET_ERROR。

    2.数据接收

   
上一章 目录 下一页