遇到一个问题,请求各位帮忙
简要描述如下:要做一个简单重定向软件[安装在电脑A]
其能实现以下功能:
根据来自INTERNET的连接IP判断将其与电脑B还是电脑C连接 
电脑A 三块网卡 一块接INTERNET 一块接电脑B 还一块接电脑C  电脑B、电脑C都有各自的内部IP
        |
       | 来自INTERNET的连接
       |
       |
  +---------+
  |  电脑A  |
  +---------+
  |         |
+-----+  +-----+
|电脑B|  |电脑C|
+-----+  +-----+A判断来自INTERNET的连接IP决定是连接到B还是C 
刚接触JAVA,对网络方向的编程没有接触过,所以没有一点头绪,希望各位不啬赐教。[是不是要用到JPCAP WINCAP等包?]

解决方案 »

  1.   

    request.getRemoteAddr()可以获得客户端的IP,再通过if else判断后,response.sendRedirect("http://B or c/xxx.jsp");即可.
      

  2.   

    > freejacky(免费的杜松子酒) ( ) 信誉:92    Blog  2007-1-9 16:03:27  得分: 0  
     >request.getRemoteAddr()可以获得客户端的IP,再通过if else判断后,response.sendRedirect("http://B or c/xxx.jsp");即可.很感激你的回复,但是目前你的做法是基于网页,我遇到的情况不是这样的[我没把问题描述清楚]
    来自互联网的连接可能是请求其他服务的 比如FTP文件上传下载 比如流媒体的传输 或者干脆是来自黑客的网络攻击等
    也就是说,凡是经过A的流量都要对其进行IP判断
    不好意思 还是描述的不专业 
     
      

  3.   

    这就相当于一个代理或者网关,很多现成的东西.做个标记,晚上回去研究一下.freejacky(免费的杜松子酒)说的绝对不行,response.sendRedirect本质是让来自INTERNET的连接直接去访问b和c,b和c都不在公网上,如何访问?
      

  4.   

    > westarea(彩色的草原) ( ) 信誉:100    Blog  2007-01-09 16:44:36  得分: 0  
     > 这就相当于一个代理或者网关,很多现成的东西.做个标记,晚上回去研究一下.
    是的
    有点软路由的味道就要求简单的实现 一篇PAPER要求一定要交代码 只好求救各位了  分不够 再开帖:-)
     
      

  5.   

    不知道搂主的意思是不是用电脑A做网关代理服务器,电脑B和电脑C通过共享网关接入互联网?
    如果这样的话电脑B和电脑C都不在公网上.即使request.getRemoteAddr()可以获得客户端的IP对您来说不具有分析的意义。
      

  6.   

    楼主可以研究一下代理服务器。推荐 Super Proxy System:
    http://www.scs.cs.nyu.edu/webbug/
      

  7.   

    >windproof(windproof) ( ) 信誉:100    Blog  2007-01-09 17:20:19  得分: 0  
     >不知道搂主的意思是不是用电脑A做网关代理服务器,电脑B和电脑C通过共享网关接入互联网?
    其实,真实的含义是这样的,对于INTERNET的用户根本不知道目前存在电脑B和电脑C,电脑C是一个陷阱系统,不提供实际服务,提供实际服务的是电脑B,目前引入电脑A,来对连接进行判断,主要是防止非法IP使用电脑B的服务,当发现是非法IP,我们将其定向到陷阱系统[电脑C] >如果这样的话电脑B和电脑C都不在公网上.即使request.getRemoteAddr()可以获得客户端的IP对您来说不具有分析的意义。
    对,根本不能从这层次下手,必须考虑网络底层
      
     
      

  8.   

    >楼主可以研究一下代理服务器。推荐 Super Proxy System:
     >http://www.scs.cs.nyu.edu/webbug/
    感谢你提供的资料,很不错。
    时间很急,必须在明天下午之前弄出来,再请各位帮帮忙。
      

  9.   

    你应该是想把a弄成代理吧,代理有很多种,能完全隔离内外网的是透明网关代理。
    如果只是一种服务的代理,只需监听一个端口或者一个协议然后做转发。
    java原生是不支持网络层以下的网络控制的。
    所以必须借助jpcap和winpcap/libpcap,然后完全重写tcpip协议系统,重写所有类型包的转发规则(很大很复杂的工作),然后实现nat。
    最近我也在写这么一个东西。