我正在为我的分布式计算课程完成一项任务,该课程处理基本套接字并且我遇到了一些问题。我的代码在大学计算机上通过SSH执行并正常运行,但是我的笔记本电脑没有。
我有一个服务器java文件,通过SSH在大学计算机上运行。如果我启动另一个SSH会话并从该计算机运行我的代码,一切运行顺利。但是,如果我从本地机器上执行该代码,则会出现Socket Timed Out错误。
以下是客户端文件的代码,它会引发错误:
try {
addr = InetAddress.getByName("___IP_Here____");
sock = new Socket(addr,3165);
} catch (Exception e) {
System.err.println("Creating Socket failed.");
System.out.println(e);
System.exit(1);
}
以下是用于创建服务器的服务器代码:
try {
addr = InetAddress.getLocalHost();
sock = new ServerSocket(3165,3,addr);
} catch (Exception e) {
System.err.println("Creating ServerSocket failed.");
System.out.println(e);
System.exit(1);
}
我认为这可能是防火墙的一个问题,我添加了异常以允许入站和出站中的Java。有没有人知道可能出现什么问题?
编辑:服务器套接字的超时为0,即无穷大。 http://download.java.net/jdk7/archive/b123/docs/api/java/net/ServerSocket.html#getSoTimeout()
编辑:这实际上是一个大学安全问题。答案 0 :(得分:1)
防火墙可能是你的问题。允许java可能还不够,检查具有更高优先级的端口和规则。如果您处于安全的环境中或断开连接,您可能会尝试关闭它以确认它是否是防火墙。顺便说一句,关闭你的资源或考虑使用try-with-resources而不是简单的try and catch,这是另一回事,试着杀死你的进程并检查你是否可以连接。