2012-02-04 35 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

根据您是否确实需要快速回复或您是否需要控制权返回到您的程序,您可以异步执行此操作。