我試圖發送一個廣播UDP消息到C#應用程序。我已經嘗試了下面的代碼來發送消息。我在php.net網站上找到a comment到socket_sendto manual page。UDP廣播發送從PHP和接收C#
<?php
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
socket_sendto($sock, $broadcast_string, strlen($broadcast_string), 0, '255.255.255.255', $port);
?>
這不適用於我,也許這是我的網絡。
但是,如果我將廣播IP '255.255.255.255'
替換爲我的特定IP,例如它可以工作。 '192.168.1.128'
。我可以看到這個消息與Wireshark進來,而我不能看到這個使用上面的代碼。這導致我相信代碼的PHP端有問題。我真的想用廣播或某種形式的多播我的節目,所以我有點停留在那一刻;)
我用接收(用於測試)結束的(C#以下):
UdpClient subscriber = new UdpClient(15000);
IPEndPoint ep = new IPEndPoint(IPAddress.Any, 15000); ;
byte[] pdata = subscriber.Receive(ref ep);
string data = Encoding.ASCII.GetString(pdata);
MessageBox.Show(data);
subscriber.Close();
任何想法可能是什麼原因呢?
在這裏工作。 'socket_sendto'的返回值是什麼? – Artefacto
修復了這一切。我想我無法將UDP包發送到'255.255.255.255'範圍內,而php服務器的ip地址在LAN範圍內,例如'192.168.1。*'子網掩碼爲'255.255.255.0'。爲了解決這個問題,我把包發送到'192.169.1.255'範圍。解釋爲什麼這實際上是這樣的情況仍然歡迎雖然;) – Bravoman
@Artefacto再次嘗試只是踢...返回值爲'255.255.255.255'是一個正整數,即使UPD數據包沒有達到我的客戶端電腦。 – Bravoman