我在表单上有两个按钮。一个用于创建socket
类的对象并开始监听端点,第二个用于停止监听它。我为第一个编写了一个代码,但是不知道如何将套接字对象的链接发送到第二个,以关闭它。
我的第一个按钮代码:
public void Listen()
{
IPEndPoint point = new IPEndPoint(IPAddress.Parse(textBoxIPListen.Text), Convert.ToInt32(textBoxPortListen.Text));
UdpClient receiver = new UdpClient(point);
try
{
while (true)
{
byte[] data = receiver.Receive(ref point);
string message = Encoding.Unicode.GetString(data);
RecieveMessage(message);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我试图通过按钮的标记设置它,但它没有工作。
答案 0 :(得分:1)
while循环阻止你的主线程。您应该创建一个用于侦听的线程或使用异步方法。
在这里查看示例:
UdpClient.BeginReceive Method (AsyncCallback, Object)
How to send link to the socket object?
。您应该创建一个字段来存储UdpClient。
public class Form1
{
private UdpClient _receiver;
public void ButtonStart_Click(object sender, EventArgs e)
{
// create the socket etc,
_receiver = new UdpClient(point);
}
public void ButtonStop_Click(object sender, EventArgs e)
{
// stop the socket.
_receiver.Dispose();
}
}