问题描述
现在有两个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来与服务器上的程序建立连接,但服务端没有反应,请高手指导一下!服务器端:packagecom.server;importjava.net.*;importjava.io.*;publicclassMyServer{publicstaticvoidmain(Stringargs[]){ServerSocketserverSocket=null;Socketsocket=null;StringinputLine=null;try{InetAddressaddress=InetAddress.getByName("xxx.xxx.xxx.xxx");//本地IPserverSocket=newServerSocket(61008,50,address);socket=serverSocket.accept();System.out.println(socket.toString());PrintWriterout=newPrintWriter(socket.getOutputStream(),true);BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));while((inputLine=in.readLine())!=null){System.out.println(inputLine+"1231");}out.close();in.close();socket.close();}catch(Exceptione){System.out.println(e);}}}客户端:packagecom.client;importjava.io.*;importjava.net.*;publicclassMyClient{publicstaticvoidmain(String[]args)throwsIOException{SocketkkSocket=null;PrintWriterout=null;BufferedReaderin=null;try{kkSocket=newSocket("xxx.xxx.xxx.xxx",61008);//指定要连接的公网IP地址及端口号。out=newPrintWriter(kkSocket.getOutputStream(),true);in=newBufferedReader(newInputStreamReader(kkSocket.getInputStream()));out.println("hello");in.close();out.close();kkSocket.close();}catch(UnknownHostExceptione){System.err.println("Don'tknowabouthost:taranis.");System.exit(1);}}}
解决方案
解决方案二:
最近也在研究这个,帮顶。
解决方案三:
该回复于2012-03-06 13:50:27被版主删除
解决方案四:
问题解决了吗,也碰到同样问题
解决方案五:
这个你内网需要做个端口映射的啊,在网关做映射,不然,你外网的客户端,怎么找得到内网中指定的服务器。。
解决方案六:
内网需要做个端口映射的啊,在网关做映射,
解决方案七:
映射,域名访问
解决方案八:
引用4楼的回复:
这个你内网需要做个端口映射的啊,在网关做映射,不然,你外网的客户端,怎么找得到内网中指定的服务器。。
这个有道理。。。
解决方案九:
给楼主推荐个软件吧,花生壳,专门解决映射问题的,楼主可以去试一试…
解决方案十:
++引用4楼的回复:
这个你内网需要做个端口映射的啊,在网关做映射,不然,你外网的客户端,怎么找得到内网中指定的服务器。。
解决方案十一:
我也在找这个东子,怎么映射!楼主说说怎么弄啊!
解决方案十二:
确实是,把局域网里的服务器开放的端口用路由映射到外网地址上去就ok了
解决方案十三:
怎么映射的啊,请问楼主实现了吗?我现在也遇到了这样的问题啊