2009-12-01 151 views
0

首先我知道座標可能是錯誤的術語?我假設我只是傳遞x和y變量,但座標更好地描述了我的感受。將座標從java客戶端傳遞到java服務器

現在我需要一個服務器,可以由2個客戶端訪問,這是一個賽車遊戲,它需要每個客戶端能夠同時操縱賽車,每個使用不同的控制方案,但這不是在那裏也不在那裏。

我希望有人能夠協助我發送賽車的x和y位置到服務器,並讓服務器將它們發送到下一個運動員,反之亦然,以使兩個賽車運動在同時在每個客戶端窗口上。到目前爲止,我只做過簡單的服務器工作,比如sun網站上的knock knock服務器,以及一個簡單的echo服務器,它重複發送給服務器的字符串。

當我嘗試使用int而不是字符串時,我收到一個錯誤,我想通過的int是動態的(顯然隨每個移動而改變),並且不能作爲靜態(使用readInt和writeInt)傳遞。

因此,任何幫助如何通過服務器在兩個客戶端窗口上創建想要的運動,將不勝感激。

感謝

回答

0

一個簡單的解決方案是使用ObjectOutputStreamserializable objects

class Coordinates implements Serializable{...} 

ObjectOutputStream out = new ObjectOutputStream(...); 
out.writeObject(new Coordinates(...)); 
+0

謝謝:)對可序列化對象的研究產生了一些很好的結果。 –

0

克雷格,你靠近。動態/靜態是一個誤解,這與你的賽車遊戲或價值觀變化無關。只是,你不能反序列化的字段,被聲明爲static(或瞬態),因爲它說,在Javadoc文檔的ObjectInputStream:聲明爲瞬態或靜態

字段由反序列化過程中忽略。

該解決方案(希望)很簡單:從x/y整數中刪除static修飾符,這應該可以解決問題。順便說一句 - 如果你的字符串是靜態的,它將會以完全相同的方式失敗。

+0

感謝您的建議,不幸的是在main中調用了整數,並且在運行時移除靜態的原因導致無法找到主要的方法。我認爲上面提到的可序列化對象是我需要的正確軌道。不過謝謝。 –

相關問題