如何发送socket对象的链接?

时间:2017-01-16 07:36:03

标签: c# .net sockets

我在表单上有两个按钮。一个用于创建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);
   }
}

我试图通过按钮的标记设置它,但它没有工作。

1 个答案:

答案 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();
     }
}
相关问题