我的服務器當前能夠發送和接收多播數據包。我增加了接收和發送單播數據包的功能。所以我創建了「DatagramSocket uniRecv」和「DatagramSocket uniSend」來模擬多播的方式。問題是,當我收到一個數據包時,我需要一種方法來判斷它是多播還是單播。我認爲「multiRecv.receive(packet)」只能用於多播數據包,但顯然它也可以用於單播數據包。有沒有辦法告訴之前或之後做.receive(包)來檢測它是哪種類型的數據包?MulticastSocket確定收到的消息是否是單播的
我需要知道,因爲當我發出回覆時,必須使用與收到的相同的方法完成回覆。所以如果我收到單播,我需要發送單播,如果我收到多播,我需要發送多播。
另一方面,MulticastSocket也可以發送單播消息嗎?
編輯: 雖然接受的職位是真實的,我能找到解決辦法。通過強制服務器發送數據包給我,使用不同的端口進行單播和多播,我能夠通過使用packet.getPort()找出它是哪一個。
您是否認爲如果我試圖在DatagramSocket上接收多播數據包,我會得到某種空值或錯誤,可用於告知它不是單播的,因此必須進行多播?我嘗試過這樣做,但到目前爲止,它似乎突破了我放入該行的功能。 – khm
DatagramSocket不能加入多播組,因此無法接收多播數據報。它不會得到「某種空值」:除了單播數據報之外,它不會得到任何東西。 – EJP