嗨,大家好我開發的C#與客戶的服務器和大量的應用程序,我需要他們特別comunicate服務器必須發送一個數據包到所有客戶端,這是隨機的時間(只有當另一個程序發送我捕獲的信號時才發送數據包)。我不想使用TCP,因爲它必須儘可能快,因爲我有很多客戶端(它們可以超過一千個)。C#UdpCLient.Receive沒有收到不同的機器上的任何數據
我試圖與UDP一些解決方案,廣播和組播,也有環奇將報文的所有的人。我使用1臺服務器和2臺客戶機進行了測試,這兩種解決方案在同一臺計算機上運行良好,但當我將它放在互聯網上時(服務器在機器上,客戶端在另一臺計算機上在不同網絡中)工作了,客戶沒有收到任何東西。
發信人:
private void send(string packet){
/* code to get the key to encript the data */
byte[] bytes = Encryptor.EncryptString(packet, key);
query = "SELECT ip FROM utenti WHERE ID <> 2";
List<string> ips = SelectIPs(query);
foreach (string ip in ips){
if (ip == "")
continue;
UdpClient client = new UdpClient();
IPAddress address = IPAddress.Parse(ip);
IPEndPoint ipEndPoint = new IPEndPoint(address, 16759);
client.Send(bytes, bytes.Length, ipEndPoint);
client.Close();
}
}
接收機:
private void receive(string packet){
receivingUdpClient = new UdpClient(16759);
RemoteIpEndPoint = new IPEndPoint(IPAddress.Parse("185.43.209.118"), 0);
byte[] receiveBytes = receivingUdpClient.Receive(ref RemoteIpEndPoint);
/* code to get the key to decrypt */
string returnData = Encryptor.DecryptString(receiveBytes, key);
Console.WriteLine(returnData);
return;
}
我張貼與迴路中的溶液在發送,但我也試圖與廣播和多播。
在做什麼和爲什麼我如果它們是不同的機器上沒有收到任何東西任何建議?