2011-10-28 75 views
0

多個實例,我有一個端口上的廣播數據消息的UDP通信系統。在第二個系統上,我使用TIdUDPServer組件捕獲這些消息,但該應用程序僅處理消息的一個子集。印地TIdUDPSever可以有鏈接到同一個UDP端口用於監聽

當我開始寫第二個應用程序在UDP數據廣播來處理其他的消息,它工作得很好。但是,如果我嘗試同時運行這兩個應用程序,則第二個應用程序會引發異常'Socket Error#10048 Address already in use。'

是否有可能重寫/延長印允許兩個組件共享同一個UDP端口監聽?

+0

當接收到一個數據包,然後應該怎麼辦?它應該去哪個組件?可能有辦法做你想做的事,但你必須告訴我們是什麼。 –

+0

我相信在開始使用* easy-networking *組件之前,應該閱讀一些聯網FAQ。 –

回答

2

兩種應用程序具有打開它們各自的插槽時指定SO_REUSEADDR標誌。 Indy組件爲此目的具有ReuseSocket屬性。但是,當多個應用程序共享相同的端口時,無法控制或保證哪個應用程序將收到哪條消息。他們不會收到他們自己的相同消息的副本。如果您需要這樣做,那麼您需要第三個應用程序,專門接收所有真實消息,然後根據需要將其轉發給適當的應用程序。否則,考慮讓應用程序監聽混雜模式的網卡(或多個)接收原始的網絡數據,而不考慮插座(不能使用印的是,雖然)。