我开发了一个聊天应用程序 Java/Socket(TCP),它可以在我的本地网络上完美运行,但是当我将它放在路由器后面时它不起作用......我已经在我的路由器上测试了开放端口: http:/ /www.yougetsignal.com/tools/open-ports/ 结果如下
80 (HTTP)is open
21 (FTP)is open
22 (SSH)22 is open
23 (TELNET)is open
25 (SMTP)25 is open
.
.
.
我用这个端口列表(java -jar server.jar 23
)启动了我的服务器:
int port=Integer.parseInt(args[0]);
ServerSocket serverSocket = null;
serverSocket = new ServerSocket(port);
System.out.println("server started at " + port);
Socket clientSocket = null ;
// repeatedly wait for connections, and process
while (true) {
try {
clientSocket = serverSocket.accept();
} catch (IOException ex) {
System.out.Println("error");
}
System.err.println("new client connected!");
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream())),true);
String s;
while ((s = in.readLine()) != null) {
out.println("from server: "+s);
}
// colse all
out.close();
in.close();
clientSocket.close();
然后然后使用一个简单的客户端我尝试连接=>收到的任何内容....
问题出在哪里?那么 Skype、Msn 和其他聊天应用程序如何正常工作?有解决办法吗?
PS:我放了一个简单的代码(回显服务器)来代表我的真实服务器,这样你就可以快速理解我的代码:)。
致以我的问候 。