用winsock写的客户端通过proxy怎么与用winsock写的服务器端通讯?

解决方案 »

  1.   

    我也想知道!
    知道通知我
    [email protected]
    谢谢
      

  2.   

    如果服务器端不是在局域网内或者没有单独的IP地址,可能不好办.
    但如果服务端是通过拨号上的网或有固定IP地址(不是内部IP),则不管客户端在什么地方,都应该可以通讯.
      

  3.   

    程序无需做修改,只需要服务器的IP和Port时指到相应的位置就可以了。
    怎样通过代理、怎样路由不是你需要考虑的~~~这是TCP/IP协议的问题
      

  4.   

    但是每一个网络都有自己的ip,而且还有自己的内部ip,这个怎么判断呀,用winsock,tcp怎么找呀
      

  5.   

    我也想知道?
    我又一台机子双网卡做代理服务器,其他局域网内的机器通过他上网,如果我局域网内的机器想和一个知道ip的internet服务器通讯,编程和局网内机器通讯有何区别????急!!!!!!!
      

  6.   

    顶一下子,希望高手解释原理,我down了个例程试了下,可以但是不明白原理??????
      

  7.   

    简单地说:一台局域网中的客户机发出的ip数据包(例如:连接到名字叫www.sina.com.cn的计算机的数据包)首先会在本地局域网中寻址,,确认找不到www.sina.com.cn这台机器,才通过网关发到internet上,通过internet上的路由发到相应的机器上
      

  8.   

    所以你并不需要考虑怎样是否通过了代理或其他的设备,这是TCP/IP协议的功能,只要服务器端的ip地址是确定的,并且是internet上合法的,你就可以和它通信
      

  9.   

    TO: usaspy(行走的鱼) ,比如说,我在internet上有个机器,有固定ip(211.100.1.1),现在想跟某局域网的一台机器联系,此局域网有n台机器,通过代理连接到internet,代理服务器在internet上的ip是(211.100.1.100),而此局域网内的机器网段是192.168.1.X,你能具体说说用winsock怎么实现从211.100.1.1 到 192.168.1.1的访问吗?
      

  10.   

    ip包里是路由器或代理服务器的IP地址,192.168.*.*在Internet上是不能用的
      

  11.   

    我以为,你的Server端不能在局域网里,而客户端可以在任何局域网里,比如客户端192。168。1。1请求连接,那么经过了局域网代理服务器,这个请求的IP可能就变成了211。100。1。1:9090 ,这个ip就是代理的ip,这个端口是代理服务器分配的,server就把这个客户端的请求当作真正的客户端来处理,其实这只是代理服务器虚拟出的一个端口,当server端向211。100。1。1:9090 发回应时,这个回应会被代理自动翻译分配到192。168。1。1上,对于server端和客户端,这个过程相当于透明的。如果双方都是经过了代理,那么必须有个中间服务器翻译两个代理之间的通信请求,当两个客户端建立起直接连接后,中间服务器退出参于。个人想法,不知道对不对
      

  12.   

    同意usaspy(行走的鱼) ,你应该看看有关路由和网段等东东的相关知识
      

  13.   

    你能具体说说用winsock怎么实现从211.100.1.1 到 192.168.1.1的访问吗?
    这是不可能的。winsock只负责udp or  tcp 上层的事。
    至于ip的路由。他是无能为力。 也不是他要管的事
    严重同意上面2为的说法
    需要明白中转分2类。 一类是ccproxy等的代理。 另外一类是 采用NAT技术microsoft的连接共享
     代理是一种规范(协议)。必须你的程序要写连接代理的代码(比如代理的ip和端口。著名的socket5代理)
    而nat技术只是端口映射。 只要client选择了网关。ip数据包会发自动送给网关。网关nat来进行ip和端口映射通信如果2方都不在网内。可以直接通信如果1方在网内1方在共网。则网内可以直接连接网外
    要网外连接网内必须转换成网内连接网外。需要网内机器发送通知给第3方。网外连接网内的时候。第3方在用udp(重要!走网内机器告诉3的虚拟通道!nat这是有保留时间的!所以要经常维持)告诉网内机器,叫网内去跟网外连接如果双方都是经过了代理,那么必须有个中间服务器翻译两个代理之间的通信请求,当两个客户端建立起直接连接后,中间服务器退出参于。
    意味如果双方都在代理后面。你的server必须通知第3方(可以是internet固定的一个ip,双方都知道)。可以采用server发送个特殊格式udp包。 第3方接收到后记录这个udp包的ip。其实对于第3方观看到的ip就是server的“代理服务器”的ip
    这个时候client去访问第3方的ip。然后跟3建立tcp连接。然后3通知server。要server来和3建立连接(重要!3不可以和server建立连接!)。这样 3告诉client已经连接。然后client发数据给3,3转给server, server发给3,3在转个client以上可以实现 client server 的tcp连接(不论网内还是在共网上的)强烈建议多看看tcp/ip协议的书
      

  14.   

    问题是,我是局网的客户端,通过代理和大网的固定IP连接,这时候我的程序如何写,肯定和局网间用户的通信不一样。好像是要三个WINSOCK ,一个用来和代理服务器通信,先和代理建立连接后,另一个WINSOCK再请求连接,......我好像看别人说过一点,剩下的不记得了,请高手们说明白,多谢,我也可以给分!现在要写一个这样的程序,急,找不到以前看过的文章了,才在这里问???
      

  15.   

    How to retrieve a file from the Web through a proxy server
    http://www.vbip.com/winsock/winsock_http_03_01.asp
      

  16.   

    winsock用Tcp那是传输层协议,而IP路由是网络层,你可以不用管阿~~~,只要你网络进行了相关的配置就可以拉
      

  17.   

    to usaspy(行走的鱼) :
    我想并不是这么容易的事情,要不然,IE中怎么会有代理设置这一项?一些S/C的C端怎么会有代理设置这一项?一些通讯组件怎么会有Proxy这一项?
      

  18.   

    我想,楼主也一定写过一般的TCP程序,在同一个局域网内当天没有问题,两方都直接在公网上也没有什么问题,但一方通过代理上网(客户端也一样),那就可能连不上,原因大家都知道,只是怎么写这样的通讯程序呢?