Тестирование вещания и получения сообщений - PullRequest
1 голос
/ 15 мая 2009

Ребята, мне трудно понять это: Я пытаюсь проверить, работает ли код (в c #) для трансляции сообщения и получения сообщения:

Код для отправки дейтаграммы (в данном случае это имя хоста):

public partial class Form1 : Form
{
    String hostName;
    byte[] hostBuffer = new byte[1024];
    public Form1()
    {
        InitializeComponent();
        StartNotification();
    }
    public void StartNotification()
    {

        IPEndPoint notifyIP = new IPEndPoint(IPAddress.Broadcast, 6000);

        hostName = Dns.GetHostName();
        hostBuffer = Encoding.ASCII.GetBytes(hostName);

        UdpClient newUdpClient = new UdpClient();
        newUdpClient.Send(hostBuffer, hostBuffer.Length, notifyIP);


    }
}

И код для получения дейтаграммы:

 public partial class Form1 : Form
{
    byte[] receivedNotification = new byte[1024];
    String notificationReceived;
    StringBuilder listBox;

    UdpClient udpServer;
    IPEndPoint remoteEndPoint;

    public Form1()
    {
        InitializeComponent();
        udpServer = new UdpClient(new IPEndPoint(IPAddress.Any, 1234));
        remoteEndPoint=null;

        startUdpListener1();

    }

    public void startUdpListener1()
    {
        receivedNotification = udpServer.Receive(ref remoteEndPoint);
        notificationReceived = Encoding.ASCII.GetString(receivedNotification);

        listBox = new StringBuilder(this.listBox1.Text);
        listBox.AppendLine(notificationReceived);

        this.listBox1.Items.Add(listBox.ToString());
    }

}

Для получения кода у меня есть форма, в которой есть только список (listBox1). Проблема здесь в том, что когда я выполняю код для получения, программа запускается, но форма не видна. Однако, когда я комментирую вызов функции (startUdpListener1 ()), цель не выполняется, но форма видна. Что не так?

1 Ответ

1 голос
/ 15 мая 2009

udpServer.Receive (), вероятно, является блокирующим вызовом, ожидающим данные (которые не получают)

...