我正在编写一个交易游戏,需要多人游戏。我意识到,我的客户只能通过" localhost"在服务器上运行的PC上。我如何判断服务器是否在线,所以我知道是防火墙还是其他什么?如果有人已经知道解决方案,我会更高兴。
谢谢!
编辑:我的操作系统是Windows 7。
更新: 我设法通过ipconfig找到两个地址,在同一台计算机上连接到我的服务器。我的rooter向我提出的一个我不知道的是另一个来自我。首先,我尝试了通过搜索找到的那个"我的IP"在谷歌上,没有用。我仍然无法通过连接到同一路由器(fritz-box)的其他PC连接到服务器。
Server:
ExecutorService executor = Executors.newFixedThreadPool(100);
ServerSocket server;
try {
server = new ServerSocket(5555);
System.out.println("Server gestartet");
while(true){
Socket client = server.accept();
executor.execute(new ClientHandler(client));
}
}catch (Exception e) {
e.printStackTrace();
}
}
Client:
try {
InetAddress addr = InetAddress.getByName("MY IP");
//Works
client = new Socket("localhost",Port);
//Does not work
client = new Socket(addr,Port);
//Does not work
client = new Socket("MY IP",Port);
System.out.println("Client gestartet");
//Streams
out = client.getOutputStream();
writer = new PrintWriter(out);
in = client.getInputStream();
reader = new BufferedReader(new InputStreamReader(in));
// ------------------------------------------------
String s = null;
while((s=reader.readLine())!=null){
render(s);
}
} catch (IOException e)
{
e.printStackTrace();
}
我离开了ClientHandler,因为我确信没有问题。
答案 0 :(得分:0)
如果是防火墙问题,您将获得连接超时。如果您拒绝连接',则服务器无法运行。
按照其他地方的建议,不修改您的ServerSocket
构造。你正在做的方式是正确的。