Jungs habe einige Schwierigkeiten dieses heraus herauszufinden: ich zu testen, ich versuche, ob der Code (in C#), um eine Nachricht zu senden und Empfangen der Nachricht arbeitet:Testing Rundfunk und Empfangen von Nachrichten
Der Code das Datagramm zu schicken (in diesem Fall ist es der Host-Name) ist:
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);
}
}
Und der Code das Datagramm zu empfangen ist:
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());
}
}
Für den Empfang des Codes habe ich ein Formular, das nur eine Listbox (listBox1) hat. Das Problem hier ist, dass, wenn ich den Code ausführen, um zu empfangen, läuft das Programm, aber das Formular ist nicht sichtbar. Wenn ich jedoch den Funktionsaufruf (StartUdpListener1()) kommentieren, wird der Zweck nicht bedient, aber das Formular ist sichtbar. Was läuft falsch?
aber wird nicht die Form atleast sichtbar sein? – Avik
@Avik, Ryansstack hat Recht. Sie müssen einen neuen Thread starten, um den blockierenden Aufruf zu vermeiden, oder einfach udpServer.BeginReceive verwenden –