我正在編寫一個需要多人遊戲的交易遊戲。我意識到,我的客戶端只能通過運行服務器的PC上的「本地主機」訪問。我怎麼知道服務器是否在線,所以我知道防火牆還是其他的東西?如果有人已經知道解決方案,我會更快樂。只能通過「localhost」訪問我的服務器
謝謝!
編輯:我的操作系統是Windows 7
更新: 我設法與兩個地址我通過IPCONFIG發現連接到我的服務器在同一臺計算機上。其中一個是我的根植者向我傾訴的,另一個來自我不知道的。首先,我嘗試了通過在Google上搜索「我的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,因爲我確信沒有問題。
你在使用什麼操作系統? – medievalgeek
您是否嘗試過按照https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#ServerSocket(ServerSocket(int port,int backlog,InetAddress bindAddr))的格式INT,%20int,%20java.net.InetAddress)? – Hang
@Hang在你列出的頁面上說,如果沒有指定bindAddr,它將綁定到任何/所有本地地址。 – medievalgeek