我已經進入遊戲開發一段時間了,我正在嘗試讓我的下一個遊戲成爲多人遊戲。我正在嘗試編寫一個服務器,它可以在每秒1/16秒左右循環計算所有實體在遊戲中的位置。客戶將能夠在需要時請求所有這些信息。Java服務器正在等待客戶端響應
因此,我試着寫一個簡單的服務器/客戶端,可以交換信息。部分的代碼可以在這裏看到:
ServerSocket listener;
Socket socket;
while(running)
{
socket = listener.accept();
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("information"); //sending the string "information" to any client that has connected
}
唯一的問題是,該服務器爲客戶端每次listener.accept()連接等待被調用,因此停止在循環其他一切需要做完了。我該如何做到這一點,以便許多客戶可以連接/請求信息,而無需服務器停止專門監聽每一次?當涉及到所有這些網絡問題時,我確實沒有太多線索,這就是我努力學習的原因。我從來沒有深入研究過,所以我很抱歉,如果這是一個看似簡單的解決方案。
(希望我對比賽如何在這裏工作正確的想法?我倒是覺得位置,一切是服務器端,並處理客戶端的唯一的東西被渲染和用戶輸入和這樣的。)
你可能會考慮在客戶端/服務器端編程中使用類似Netty的東西,這是一個非常成熟和廣泛使用的網絡通信庫。他們有很好的例子(查看簡單的Echo例子的基礎知識)http://netty.io/wiki/ – Alex
看看Java教程的自定義網絡部分。 – EJP