我写了一个小的TCP聊天客户端和服务器。在localhost上开始运行时,现在我将它移动到外部主机。个人工作正常,因为我已禁用防火墙,但在另一台机器上它无法获取IOException(在创建Socket时)。尝试添加端口我正在使用9764入站和出站规则,后来根本禁用防火墙,它仍然无法获得相同的IOException。有什么想法吗?
错误日志:http://pastebin.com/zEbFbX4Y 客户代码:https://github.com/karosas/Simple-tcp-chat-client
此处有例外情况:
try {
client = new ChatClient();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
JOptionPane.showMessageDialog(that, "Unknown host exception");
} catch (IOException e) {
JOptionPane.showMessageDialog(that, "IOException");
e.printStackTrace();
}
导致ChatClient - >
public ChatClient() throws UnknownHostException, IOException {
server = new Socket(host,port);
out = new PrintWriter(server.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
server.getInputStream()));
stdIn = new BufferedReader(new InputStreamReader(System.in));
sc = new ServerConn(server);
}
它导致ServerConn
private BufferedReader in = null;
public ServerConn(Socket server) throws IOException {
in = new BufferedReader(new InputStreamReader(
server.getInputStream()));
}
public void run() {
String msg;
try {
while((msg = in.readLine()) != null) {
System.out.println(msg);
}
} catch(IOException e ) {
System.err.println(e);
}
}
感谢您的一切。
答案 0 :(得分:1)
正在发生的事情是,在localhost上,连接不需要通过您的互联网路由器防火墙的权限,但是当它连接到不同的互联网路由器时,如果路由器没有将该端口列入白名单,则路由器可以拒绝您从服务器你需要进入互联网路由器的NetBIOS(服务器的互联网路由器),然后白名单端口,通常在:
ADVANCED> NAT>虚拟服务器/端口转发。
有关如何执行此操作的详细信息,请阅读互联网路由器手册。
编辑: 你正在做的是尝试连接到127. *。。**地址意味着它甚至没有进入你的网络。在服务器计算机上右键单击您的任务栏选择任务管理器转到perforamce选项卡并选择wifi然后找到IpV4地址并使用它而不是127.7.13.129