Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
             IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);
             EndPoint ep = (EndPoint)iep;
             sock.Bind(iep);
             listBox1.Items.Add("ready to receive...");
             byte[] data = new byte[1024];
             int recv = sock.ReceiveFrom(data,ref ep);
             string stringData = System.Text.Encoding.ASCII.GetString(data,0,recv);
             string infomation = "received: " + stringData + " from: " + ep.ToString();  
             listBox1.Items.Add(infomation);
             sock.Close();
我创建了一个按钮 把这段代码放在了点击事件里面 但是一执行就卡住了 怎么回来??

解决方案 »

  1.   

    int recv = sock.ReceiveFrom(data,ref ep);阻塞了吧
      

  2.   

    你的sock什么都没有呢,没连接,也没监听,就直接ReceiveFrom,当然会Block,你先搞清楚是要做服务器端还是客户端,在点击事件理做网络操作肯定会block状态,你要把网络剥离开来,单独线程去跑,或者用异步来跑
      

  3.   


    超时不是根本办法,用非阻塞或者异步的。
    即使设置超时,仍然是以前的情况,无法就是到了时间程序会反应过来,有什么用吗?上网搜一下c# socket编程 TcpClient 。例子很多的