最近写了一个HTTP代理服务器, 有些心得, 与大家分享

来源:互联网 发布:php与nginx交互报403 编辑:程序博客网 时间:2024/05/21 12:48

 

    HTTP代理服务器的原来其实很简单,就是把客户端请求的数据发往远程服务器,再将从远程服务器的接收到的数据发往客户端。但是在编写的时候需要注意几个问题。

      1.  从客户端接收数据,可以用同步的函数recv,但是发往远程服务器的时候,必须采用异步发送的方法,即用

   WSASend(
    SOCKET s,
    LPWSABUF lpBuffers,
    DWORD dwBufferCount,
    LPDWORD lpNumberOfBytesSent,
    DWORD dwFlags,
    LPWSAOVERLAPPED lpOverlapped,
    LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
    );

    利用WSAWaitForMultipleEvents函数等待WSAOVERLAPPED结构中的事件对象。

    如果用send函数发送的话,会已发现发送的数据量为0。

 

    2.  代理服务器用accept函数会得到一个SOCKET,这个SOCKET用完后一定得用closesocket函数关闭掉,否则后续的SOKCET接收不进来。