Ребят у меня возникают некоторые трудности выяснить это: я пытаюсь проверить, является ли код (в 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()), цель не подана, но форма видна. Что происходит не так?
но привычка форма по крайней мере быть видимым? – Avik
@Avik, ryansstack - это правильно. Вам нужно будет начать новый поток, чтобы избежать блокирующего вызова, или просто используйте udpServer.BeginReceive –