我在VMware中有一個實驗室環境,帶有一個WS2008R2服務器和一個W7客戶端。我試圖從服務器廣播一個WCF服務地址並在客戶端接收這個地址。我在C#.NET中使用System.Net.Sockets,我可以成功地從服務器發送數據。至少我用WinDump很好。但是,當我嘗試在客戶端上收到它時,它會失敗。我不知道問題在哪裏..?如果我手動輸入地址,客戶端可以通過其他方式與我的WCF服務進行通信。爲了以防萬一,我已經在實驗室環境中關閉了防火牆。WCF服務地址的UDP廣播
[更新]
我檢查WinDump的在我的客戶端虛擬機,相同的UDP消息,因此似乎能夠接收廣播這裏showes起來爲好。但爲什麼ReceieveFrom方法沒有返回任何東西?我是否設置了客戶端套接字錯誤?它應該綁定到任何地址或其本地IP?無論是作品...
[/更新]
繼承人的服務器代碼:
public static class MulticastServer
{
static Socket socket;
static IPEndPoint ep = new IPEndPoint(IPAddress.Broadcast, 9050);
public static void Open()
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
}
public static void Send(string message)
{
socket.SendTo(Encoding.ASCII.GetBytes(message), ep);
}
public static void Close()
{
socket.Close();
}
}
而且客戶端:
public static class MulticastClient
{
public static string ReceiveOne()
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint ep = new IPEndPoint(IPAddress.Any, 9050);
socket.Bind(ep);
byte[] data = new byte[1024];
EndPoint e = (EndPoint)ep;
int i = socket.ReceiveFrom(data, ref e);
socket.Close();
return Encoding.ASCII.GetString(data, 0, i);
}
}
啊我怎麼會錯過了!謝謝! – 2010-09-26 07:25:26