当前位置:编程学习 > JAVA >>

Android Socket访问外网IP 失败 求教

现在有两个java程序,一个运行在服务器端,一个运行在客户端: 
       在局域网的时候将两段程序中的 xxx.xxx.xxx.xxx 都设定为服务器的IP时程序能够正常运行。 
       现在将服务器端的程序运行在局域网的一台服务器上,这台服务器对应两个IP,一个是内网的IP10.22.60.28,一个是外网的IP210.52.23.14,通过外网IP访问这台服务器时要经过NAT转换,换成10.22.60.28再访问。 
       问题:客户端程序运行在外网的一台主机上,想将客户端xxx.xxx.xxx.xxx 设为210.52.23.14来与服务器上的程序建立连接,但服务端没有反应,请高手指导一下! 


服务器端: 
package com.server; 
import java.net.*; 
import java.io.*; 
public class MyServer{ 
    public static void main( String args[]){ 
        ServerSocket serverSocket = null; 
        Socket socket = null; 
    String inputLine = null ; 
    
    try{ 
     InetAddress address=InetAddress.getByName(" xxx.xxx.xxx.xxx");//本地IP 
        serverSocket = new ServerSocket(61008,50,address); 
        socket = serverSocket.accept() ; 
         
        System.out.println(socket.toString()); 
         
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true); 
      BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream())); 
       
      while ((inputLine = in.readLine()) != null)  { 
        System.out.println( inputLine +"1231") ; 
      } 
      out.close(); 
      in.close(); 
      socket.close(); 
    }catch( Exception e ){ 
        System.out.println( e ) ; 
    } 
    } 


客户端: 
package com.client; 
import java.io.*; 
import java.net.*; 
public class MyClient { 
  public static void main(String[] args) throws IOException { 
    Socket kkSocket = null; 
    PrintWriter out = null; 
    BufferedReader in = null; 
    try { 
      kkSocket = new Socket(" xxx.xxx.xxx.xxx", 61008); //指定要连接的公网IP地址及端口号。 
       
      out = new PrintWriter(kkSocket.getOutputStream(), true); 
      in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream())); 
      out.println("hello"); 
      in.close(); 
      out.close(); 
      kkSocket.close(); 
    }catch (UnknownHostException e) { 
      System.err.println("Don't know about host: taranis."); 
      System.exit(1); 
    } 
  } 


--------------------编程问答-------------------- 最近也在研究这个,帮顶。 --------------------编程问答-------------------- --------------------编程问答-------------------- 问题解决了吗,也碰到同样问题 --------------------编程问答-------------------- 这个你内网需要做个端口映射的啊,在网关做映射,不然,你外网的客户端,怎么找得到内网中指定的服务器。。 --------------------编程问答-------------------- 内网需要做个端口映射的啊,在网关做映射, --------------------编程问答-------------------- 映射,域名访问 --------------------编程问答--------------------
引用 4 楼  的回复:
这个你内网需要做个端口映射的啊,在网关做映射,不然,你外网的客户端,怎么找得到内网中指定的服务器。。

这个有道理。。。 --------------------编程问答-------------------- 给楼主推荐个软件吧,花生壳,专门解决映射问题的,楼主可以去试一试… --------------------编程问答-------------------- ++
引用 4 楼  的回复:
这个你内网需要做个端口映射的啊,在网关做映射,不然,你外网的客户端,怎么找得到内网中指定的服务器。。
--------------------编程问答-------------------- 我也在找这个东子,怎么映射!楼主说说怎么弄啊! --------------------编程问答-------------------- 确实是,把局域网里的服务器开放的端口用路由映射到外网地址上去就ok了
补充:Java ,  J2ME
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,