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

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

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

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

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

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

添加图片注释,不超过 140 字(可选)

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

相关推荐