首先来说下socks5远程解析的好处有以下几点:
1.遇到有些游戏要google用户名登陆,有些海外游戏社区国内打开不了。如steam社区。做外贸的,必须要国内能访问。
2.远程dns解析,是与socks5服务器交互时,直接传送域名,跳过了dns这一步,如果是做网络加速,这速度也有不少提升。
以上这些情况,远程dns就派上用场了。
远程dns解析是在客户端拦截dns请求,取得域名。socks5交互数据时通过socks5自身的远程解析函数传送域名到代理服务器即可完成操作。核心代码如下:
buffer[0] = 5;
buffer[1] = 1;
buffer[2] = 0;
buffer[3] = 3;
int m = strlen(name);
buffer[4] = m;
memcpy(buffer + 5, name, m);
*((unsigned short*)(buffer + 5 + m)) = port;
pSocket->Send(buffer, m + 7);
int n = pSocket->Recv(buffer, 10);
if (n != 10) return FALSE;
if (buffer[1] != 0) return FALSE;
if (buffer[3] != 1) return FALSE;
l_ip = *((unsigned long*)(buffer + 4));
下面看下实际效果: