private void btnQQlogon_Click(object sender, EventArgs e)
        {  
         
            if (listenClient != null)
                listenClient.Close();
          try
          {
             //创建一个新的端口号,接收缓冲区大小,发送缓冲区大小
            listenClient = new UdpClient(ServerClientIpPortInfo.ClientReceivePort);         
            listenClient.Client.ReceiveBufferSize = 1000000000;
            listenClient.Client.SendBufferSize = 1000000000;            
                //下面分别为发送和接叫服务器的信息
                SentMessageToServer();                //
                AcceptMessageFromServer();            }
            catch (SocketException ex)
            {              
                if (ex.ErrorCode.ToString() =="10048")
                {
                    System.Diagnostics.Process[] pros = System.Diagnostics.Process.GetProcesses();
                    for (int i = 0; i < pros.Length; i++)
                    {
                        if (pros[i].ProcessName == "LANClientQQ.vshost")
                        {
                            pros[i].Kill();
                            break;
                        }
                    }
                    listenClient.Client.Close();
                    listenClient.Close();
                }        
             
                MessageBox.Show(ex.Message.ToString());
                return;
            }
          finally
              {
               listenClient.Close();
              }        }   在我没有绑定的时候就出现一个这样的问题,时有时玩的呀?不知道是怎么回事,网上查了,要将其释放资源,但第一次能行的通第二次就不行了呀?
   请大家给以绑助呀?说具体的方法是多少呀?
  本人QQ:609858636

解决方案 »

  1.   

    listenClient = new UdpClient(ServerClientIpPortInfo.ClientReceivePort); 
    拿出去防在初始化地方.试下。
      

  2.   

    是就放到初始化的地方了呀。有会起动的时候是没有问题的呀?我在是一个机子上测试的呀?一个Server,一个Client呀?不小的这引起的呀?不过我没有将一个端口绑定到一起的呀。
      

  3.   

    写出具体出错在哪一行吧,我感觉并不是在这段程序里出错的。另外finally里面的close和catch里面的是不是重复了?如果发生10048错误,会执行两次listenClient.Close() 吧