不是吧!我觉得代理是应用层的东西了。就是说,发给谁不是底层的IP包知道的,而是将IP包中的数据组合成的命令所决定的。
比如说,机器A通过代理B和机器C通讯。那么,机器A会给B发一个从C取的命令,这是一个应用层的命令,是由服务程序来处理的。服务程序将这个命令分成一个个IP包发给B,在B中的再将IP包组合成命令,交给在B中的服务程序,你的明白的?

解决方案 »

  1.   

    我明白 这样假设一下:
    一个网吧 有2台以上的工作站,1台服务器作代理
    使用QQ上网聊天 我想QQ 功能只能使用端口和IP
    来识别机器吧?那么在Internet  上传送的信息
    应该都是这一个服务器的IP 
    如果我发一个消息给在这个网吧上网的人那么在这
    消息的IP  部分应该是这个服务器的地址那么服务
    器把这个消息发给哪一个工作站呢?
      

  2.   

    晕倒!!!
    Proxy的原理需要了解。机器A发想消息至Proxy。---connect(ProxyServer);
                            send(msg);
                            注意:这里没有closesocket()
                            假设为s1 socket
     Proxy收到消息---connect(目的机器)
                     send(msg) to 目的机器
                     recv(msg) from 目的机器
                     closesocket(目的机器)
     Proxy再将消息返回机器A
               send(msg)  利用s1---未关闭!
    最后,机器A再closesocket(s1)也就是讲,socket一直是通的Proxy不是根据机器的IP地址决定将消息发给谁的。
    比如:一台机器同时运行两个IE,怎么办?好像从来没出过问题嘛。
    了解一下socket的编程吧。。
      

  3.   

    我知道你的意思,但是在用QQ时,你总不能指望我同时保留和所有人的socket吧?
    当一个人登录QQ的服务器时,只会把他的IP地址告诉服务器吧?我如果再登录上
    去只能人服务器上获得他的IP地址吧?我要发一个消息,或者我要与他建立一个
    联接的话,这时我总只能向这个IP发信号吧?那么这个proxy收到了这个联接请求
    了之后,会把这个请求与哪一个socket关联上呢?