欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

Visual C++网络编程(黑客)学习笔记四

Visual C++网络编程(黑客)学习笔记四

服务器端的Socket对象绑定完成之后,服务器端必须建立一个监听队列来接受客户端发送的请求。listen()函数使服务器短的Socket进入监听状态,并设定可以建立的最大连接数(一次同时连接不能超过5个IP)。
listen()函数原型:
int listen(
          SOCKET s,
          int backlog
);
函数参数解释:
s:指定监听的Socket描述符。
backlog:一次同时连接的最大数目。
该函数调用成功返回0,否则返回SOCKET_ERROR.服务器端的Socket调用完listen()后使其套接字s处于监听状态。处于监听状态的流套接字s将维护一个客户连接请求队列,最多容纳backlog个客户连接请求。
当客户端发出连接请求时,服务器端hwnd视窗会收到Winsock Stack送来自定义的一个消息,为了使服务器端接受客户端的连接请求,就要使用accpet()函数。处于监听状态的流套接字s从客户端连接请求队列中取出排在最前面的一个客户请求,并且创建一个新的套接字来与客户端套接字共同创建连接通道。原先处于监听状态的套接字继续处于监听状态,等待客户端的连接,这样服务器端和客户端才算正式完成通信程序的连接动作。如果创建连接通道成功就返回新创建套接字的描述符,以后与客户端套接字交换数据的是新创建的套接字;如果失败则返回INVALID_SOCKET.
accpet函数原型:
SOCKET accept(
       SOCKET s,
       struct sockaddr FAR *addr,
        int FAR *addrlen
);
函数参数解释:
s:处于监听状态的流套接字。
adder:用来返回新创建的套接字的地址结构。
addrlen:指明用来返回新创建的套接字的地址结构的长度。
下面是accept()函数的示例。
//......
           struct sockaddr_in addr;
            int addrlen;
            addrlen  = sizeof(addr);
            addr = accept(sSocket, (struct sockaddr *)&addr, &addrlen);
//......

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功