一、先说一下服务端的流程:
1、主线程负责监听客户端的连接;
2、当有客户端连接时,主线程通过管道向相应的子线程发送监听套接字描述符,子线程通过负载均衡法选择出来;
3、当主线程发送监听描述符时,子线程的读管道回调函数会被回调;
4、子线程为收到的监听描述符设置读取回调、写回调、事件回调等回调函数;
5、子线程通过开启的事件循环,循环监听第4步的事件,并回调相应的回调函数。
二、客户端发送文件、服务端接收文件原则(与上一节的方法不同):
1、客户端发送文件时采用读取多少字节就发送多少字节,程序中设置成10000字节;
2、服务端接收多少字节就写文件多少字节
3、与上一节的方法相比,此方法对于大文件也适用。
三、服务端代码,代码中有详细的注释:
// LibeventMulThreadBalanceDemo.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "winsock2.h"
#include <process.h>
#include <io.h>
#include <fcntl.h>
#include "event2/listener.h"
#include &