我可以發送一個udp消息到特定的網址和端口(成功),但我無法收到我可以在Wireshark上看到的響應消息!接收udp消息丟失
這是我使用的UDP連接代碼:
Byte[] sendBytes = Encoding.ASCII.GetBytes(sipMessage);
String responseData = String.Empty;
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
try
{
using (UdpClient udpClient = new UdpClient(ipaddr, 5060))
{
udpClient.Client.ReceiveTimeout = 1000;
udpClient.Send(sendBytes, sendBytes.Length);
Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
responseData = Encoding.ASCII.GetString(receiveBytes);
}
}
catch (Exception ex)
{
responseData = ex.Message;
}
如果我不設置超時,線程繼續工作。
的應答消息如下:
連接嘗試失敗,因爲連接的方沒有 ,因爲連接主機未能響應一段時間後正確響應或已建立的連接 失敗
從Wireshark的結果如下:
+-----+-----------+--------------+--------------+----------+--------+--------------------------------------------------------+
| No. | Time | Source | Destination | Protocol | Length | Info |
+-----+-----------+--------------+--------------+----------+--------+--------------------------------------------------------+
| 465 | 33.378167 | 192.168.1.61 | 192.168.1.63 | SIP | 289 | Request: MESSAGE sip:[email protected] | (text/plain) |
| 469 | 33.817460 | 192.168.1.63 | 192.168.1.61 | SIP | 254 | Status: 200 OK | |
+-----+-----------+--------------+--------------+----------+--------+--------------------------------------------------------+
編: 192.168.1.61是承載網頁的計算機,192.168.1.63是WiFi DECT電話
我需要發送SIP消息到WiFi DECT(我已經實現)
電話發回一個SIP消息到192.168.1.61:5060。 SIP流量是這樣的:
[隨機端口] - 消息 - > [5060]
[5060] < - 200 OK - [5060]
所以,PC作爲udp客戶端連接到dect併發送消息,dect向PC的5060端口發回200 OK sip消息。我在收到200 OK消息時遇到問題!
NEWS:當我停止pbx服務器的服務時,我可以得到結果(200 OK);否則,我無法收到任何SIP消息...
什麼是「udpClient.Receive」? –
用於接收發件人的數據。如果你的服務器和客戶端都在控制之下,你可以/必須自己寫回應。 – Johan
正如您可以在wireshark日誌中看到的那樣,udp有一條響應消息。 –