如何在服务器端使用Socks代理?(以及http代理服务器的特殊问题,一样有分) (100分)

  • 主题发起人 主题发起人 乡村月光
  • 开始时间 开始时间
to mjy87:
C必需吗?我在A和D之间建立的已经是HTTP连接
 
如果防火墙不允许你用HTTP外的其它协议访问外网的话(你还是需要向外发信息的),只能内部用HTTP出去,在外网通过C转换成别的协议,然后以此协议来访问D。也相当于A通过此协议访问D了。反过来,D到A的信息也是反转换的方式。
 
请求 Socket5服务绑定分配即可
 
to jingtao:
服务器绑定分配完以后,如何和连接上来的客户端通讯?用原有的连接吗?另外,一个绑定是否能让多个客户端连接?谢谢!
 
to mjy87:
其实D本身就是一个HTTP协议的服务器,是从Indy的TIdCustomHTTPServer继承下来的,只是在一定条件下执行自己的服务线程直接读取数据(用AThread.Connection.ReadBuffer)进行处理,别的没做改动,我关心的是,如果客户端在有代理服务器的情况下用IdHTTP.WriteBuffer发数据,是否能通过代理服务器到达服务器端?只要能到就没任何问题了。
 
原来是这样啊!
 
可以考虑使用XML,HTTPGET什么的,有个SERVER的支持SOCKS,我记不清了,在ASP中可以,不知道转到DELPHI上可以不?在MSXML4中有这么一个对象
 
to skill_dfw:
谢谢你的参与!
 
通过实验和分析,基本上可以确定利用socks 5在有握手服务器的情况下实现不同局域网内机器点对点通讯的方法:
1)不同局域网后的机器A和B同时连接到握手服务器C
2)局域网内的机器A连接到socks服务器D,通过验证后发送BIND绑定,取得一个地址和端口
3)A把该地址和端口发送到C,由C通知B用该地址和端口连接
4)B连接到D,D就会把B的连接信息(地址和端口)发送到A,这时A和B之间的连接就通过D建立起来了
本方法已经实验成功,不知道是不是所有的socks 5代理都提供这样的功能?
 
估计QQ等软件就是这么工作的,不知道为什么提出问题一个礼拜而没有人给出一个象样的答案!也许这个问题泄露了某些秘密的技术,我不是程序员,只能说声遗憾,没有Delphi,也许我不会对程序设计感兴趣。为搞清楚这个问题,忙了几小时,终于有了结果,也突然感觉到好累,看来做程序员真辛苦,幸好我不是,呵呵,感谢支持的朋友,欢迎就这个问题继续交流!
 
呵呵,
其实,唉!!!
我的邮箱是LEABER@165E.COM
能不能给些资料学习一下,谢谢!~!
一个和你深有同感的DFW
 
我的感觉是,你不如自己写个代理服务器,这样你就可以控制了。
 
自己的服务器需要固定IP啊
 
to乡村月光:
看来你是有结果了,直到现在好象才明白你的意图,其实和我的想法差不多,关于SOCKE5的BIND绑定原理我是知道的,只不过没动手试过,现在看到你实验成功了,不错。因为目前,主要是NAT代理为主,SOCKET5代理的方式相对较少了。不知你实验过严格NAT的P2P吧?当然SOCKET5、非严格NAT(直接中转就OK)和严格NAT三种方式都支持了才能说是比较全面的解决P2P问题,当然如一校园网、城域网等一些封闭端口和防火墙过滤的难度更大,HTTP的代理不知道能否解决此问题。大家一起努力啦!!
 
多人接受答案了。
 
后退
顶部