0
我有一個使用Java的電子表格應用程序,它提供的功能之一(我開發的)是工作表共享。基本上,任何人都可以成爲客戶端或服務器,因爲應用程序同時具有服務器和客戶端代碼。作爲服務器的用戶創建共享,指定IP,然後創建並激活共享(最佳情況),服務器在其IP和選定端口上偵聽客戶端。通過DatagramSocket發送列表?
對於自動發現,我通過UDP廣播使用DatagramSockets,而'真正的通信'是基於TCP(客戶端已連接後)。但是,我試圖通過該UDP套接字發送List
,我不知道該怎麼做。該List
包含我需要發送到客戶端的服務器上的活動共享,以便它知道它可以連接到什麼。
它是這樣的:
客戶端 - >通過發送一個數據包到網絡上查找活動服務器 - >服務器偵聽和發送數據包回來。這個包應該是List
(如果可以通過這些類型的套接字發送)。
任何人都可以闡明我的問題嗎?謝謝。
謝謝。只是一個問題:我所有的List對象都是'ServerInstance',這是我的'ServerShareInstance'主類中的一個內部類。我應該序列化前者嗎? – swiftcode
如果它是一個內部類,它也需要聲明爲Serializable。如果它擴展了另一個可序列化的類或實現了一個擴展了Serializable的接口,則不需要聲明類Serializable。只要你的對象圖中的所有對象都可以是Serializable的實例,那你就很好。如果您嘗試將這樣的對象寫入ObjectOutputStream,您將會收到一個NotSerializableException異常。您還應該在類中包含一個serialVersionUID字段,這在每個反序列化對象的JVM中都必須相同,因此應將其設置爲特定值。 –
原來我是序列化'套接字'列表,這是不允許的(不實現接口),所以它總是拋出異常。我轉向'InetSocketAddress',因爲我只需要這個IP和端口,現在它工作的很好。謝謝! – swiftcode