2012-02-04 65 views
1

我期待在C#中的子網上向所有IP發送一條短消息。我正在使用TCPClient,問題是TCPClient.Connect()函數需要20秒纔會拋出異常,如果沒有使用該IP的話。如果可能的話,我會希望得到大約幾毫秒的東西。在C#中向多個IP地址廣播

我真的想要做的是發送一個字節到每個地址,並從某些收到ACK。如果有一種方法可以在不明確使用Connect(),TCPClient的情況下執行此操作,甚至只需設置一個我不知道的Connection超時值,我就可以輕鬆地切換到此。

我正在尋找在多臺計算機上運行此程序,並將使用此廣播,以便每個實例將知道其他實例的IP。所以我真的只需要發送幾個字節來識別。

+0

你可以使用UDP嗎?你需要發送什麼類型的消息? [C#套接字連接超時](http://stackoverflow.com/questions/1062035/how-to-config-socket-connect-timeout-in-c-sharp) – drew010 2012-02-04 04:27:34

+0

是的,我可以使用UDP。我只需要發送幾個字節。速度更快嗎? – user912447 2012-02-04 04:38:19

回答

4

爲什麼不通過UDP地址進行廣播。如果客戶正在監聽該地址,他們會收到該消息(雖然不能保證像TCP),但如果他們不在那裏,廣播公司並不在意。這聽起來像你需要的是UDP,它更像是一個廣播給任何正在收聽場景的人。

+0

太好了。 UPD連接或更快連接失敗? – user912447 2012-02-04 04:33:27

+1

@ user912447否; UDP有* no *連接。你只是「開火併忘記」數據。 – 2012-02-04 04:38:33

+0

美麗。我想我會隨之而去。非常感激。 – user912447 2012-02-04 04:40:27

1

根據您是否確實需要快速回復或您是否需要控制權返回到您的程序,您可以異步執行此操作。