|
|
 |
|
| 不知道该如何评价,心里有些不安,又为作者的创意所折服。 |
Post by cnwill on 2010, April 17, 10:19 PM
|
| 围观群众纷纷表示鸭梨很大…… |
Post by blackfox on 2010, April 19, 12:44 PM
|
| 鸭梨很大 |
Post by 围观群众 on 2010, April 19, 5:01 PM
|
云舒,你好。不好意思,把你的代码拿去调了半天还是有问题,就在这里请教你了,还请原谅。
我把你的socks5服务器的Linux下版本拿去测试了下,不知道问题出现在哪,希望能得到你的指点,谢谢!
源代码:http://forum.eviloctal.com/thread-32066-1-1.html
我是在虚拟机里实现的,网络连接如下:
pc(实际的机器)<---->虚拟机1(socks5服务器)<----->另一个想通过socks5上网的虚拟机(2)
我在虚拟机2里的浏览器里设置了socks5代理,端口号为1080,并在浏览器里输入网址,如http://http://220.181.6.19/,百度首页
编译程序,运行:./socks5 1080
能够连接成功,但是
运行老是出现错误:recv username and password error
在int SelectMethod( int sock )函数中的
// recv METHOD_SELECT_REQUEST
int ret = recv( sock, recv_buffer, BUFF_SIZE, 0 );
if( ret <= 0 )
{
perror( "recv error" );
close( sock );
return -1;
}
recv_buffer[0]=5, recv_buffer[0]=1, recv_buffer[0]=0;
但是当运行到函数int AuthPassword( int sock )时,sock为啥就收不到数据了
// auth username and password
int ret = recv( sock, recv_buffer, BUFF_SIZE, 0 );
if( ret <= 0 )
{
perror( "recv username and password error" );
close( sock );
return -1;
}
请问:
1.认证的时候的用户名和密码是怎么回事?是虚拟机2登陆时候的用户名和密码吗?
2.测试的时候是直接在虚拟机2的浏览器里输入网址就行吗?
3.我觉得int ForwardData( int sock, int real_server_sock )函数中,这个
if( FD_ISSET(sock, &fd_read) )
……
else if( FD_ISSET(real_server_sock, &fd_read) )
……
第二个else if是不是应该是if啊,要不然的话从real_sever处接受的数据就传不到client了吧
非常感谢! |
Post by wxdlut on 2010, April 19, 8:53 PM
|
|