У меня есть лабораторная среда в VMware с WS2008R2-сервером и W7-клиентом. Я пытаюсь передать WCF-сервис-адрес с сервера и получать его в клиенте. Я использую System.Net.Sockets в C# .NET, и я могу успешно отправлять данные с сервера. По крайней мере, я выгляжу нормально с WinDump. Но когда я пытаюсь получить это на клиенте, он терпит неудачу. Я не могу понять, где проблема ...? Клиент может взаимодействовать с сервером другими способами и с моей WCF-службой, если я вручную укажу его адрес. На всякий случай я превратил свои брандмауэры в лабораторную среду.UDP-трансляция адреса службы WCF
[Update]
Я проверил WinDump на мой клиент-VM и тот же УДФ-сообщение showes здесь, а так, кажется, чтобы иметь возможность принимать вещание. Но почему arent метод ReceieveFrom возвращает что-нибудь? Я неправильно настроил клиентский сокет? Должен ли он привязываться к Any-адресу или его локальному ip? Ни работы ...
[/ Update]
Heres сервер-код:
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);
}
}
Ahh, как мог Ive пропустить это! Благодаря! –