2013-10-05 100 views
0

這聽起來很瘋狂,但是如果我運行兩次相同的進程並且我想向接收方發送一個UDP消息兩次,所以接收方知道該進程在客戶端上運行兩次。這可能嗎?VB.net發送UDP消息兩次

'Count Process 

    Dim processCount As Integer = Process.GetProcessesByName("Putty").Count() 

'Send Data 


    Dim client As New UdpClient() 
    Dim ip As New IPEndPoint(IPAddress.Broadcast, 15000) 
    Dim bytes As Byte() = Encoding.ASCII.GetBytes("GotPutty") 
    client.Send(bytes, bytes.Length, ip) 
    client.Close() 

因此,如果Process Count = 2,那麼我將如何發送兩次「GotPutty」?

回答

1

要發送消息兩次,只需撥打client.Send兩次。

但是,或許更好的方法是將數據包含在消息中,例如進程數量 - 與TCP/IP不同,UDP不提供有關是否會收到消息的保證,因此接收消息不一定僅表示一個進程正在運行,這可能意味着第二條消息根本沒有達到你。如果知道收到的消息很重要,則可能希望切換到TCP/IP或發送確認(如果未收到此消息,您將重新嘗試原始發送,直到確認消息已得到通過確定)

+0

謝謝。問題,用TCP/IP你必須知道IP地址是否正確?您可以使用UDP將客戶端IP發送到服務器應用程序,然後使用TCP/IP進行客戶端/服務器連接? –

+1

我相信如果你想做廣播,你需要使用UDP。正如您所建議的那樣,您可以使用目標TCP數據包回覆廣播以啓動正確的對話。 –

0

我只是想建議發送運行的進程數而不是「GotPutty」。

或發送「Putty.exe | 2」並將其分割爲|一經收到。 這樣,當您收到傳輸時,您確定您擁有正確數量的進程,而不會冒丟失數據包或丟失目標數據包的風險......