예제 #1
0
 private void button1_Click(object sender, EventArgs e)
 {
     try
     {
         if (Client != null)
         {
             if (net != null)
             {
                 NetMsg msg = new NetMsg();
                 msg.Fip   = Dns.GetHostAddresses(Dns.GetHostName())[0];
                 msg.JieIP = Dns.GetHostAddresses(textBox3.Text)[0];
                 msg.msg   = textBox4.Text;
                 byte[] tmp = XuLie.ObjToByte(msg);
                 net.Write(tmp, 0, tmp.Length);
             }
         }
         else
         {
             textBox1.Text += "未与服务器建立连接\r\n";
         }
     }
     catch (Exception)
     {
         textBox1.Text += "未与服务器建立连接\r\n";
     }
 }
예제 #2
0
 private void timer1_Tick(object sender, EventArgs e)
 {
     try
     {
         if (Client != null)
         {
             if (net.CanWrite == true)
             {
                 NetMsg msg = new NetMsg();
                 msg.msg = "0000";
                 byte[] tmp = XuLie.ObjToByte(msg);
                 try
                 {
                     net.Write(tmp, 0, tmp.Length);
                 }
                 catch (IOException)
                 {
                     textBox1.Text += "已经从服务器断开连接\r\n";
                     Client.Close();
                     Client = null;
                     return;
                 }
             }
         }
         else
         {
             textBox1.Text += "未与服务器建立连接\r\n";
         }
     }
     catch (Exception err)
     {
         textBox1.Text += err.Message + "r\n";
     }
 }
예제 #3
0
 private void JieShou()
 {
     try
     {
         while (Client != null)
         {
             net = Client.GetStream();
             if (net.CanWrite == false)
             {
                 Client = null; return;
             }
             if (net.DataAvailable == true)
             {
                 byte[]       tmp    = new byte[1024];
                 MemoryStream memory = new MemoryStream();
                 int          len    = 1;
                 while (len != 0)
                 {
                     if (net.DataAvailable == false)
                     {
                         break;
                     }
                     len = net.Read(tmp, 0, tmp.Length);
                     memory.Write(tmp, 0, len);
                 }
                 if (memory.ToArray().Length != 4)
                 {
                     NetMsg msg = (NetMsg)XuLie.ByteToObj(memory.ToArray());
                     textBox1.Text += msg.Fip.ToString() + "说: " + msg.msg + "\r\n";
                 }
             }
             Thread.Sleep(200);
         }
     }
     catch (Exception err)
     {
         MessageBox.Show(err.Message);
         lock (textBox1)
         {
             //textBox1.Text = err.Message;
         }
     }
 }
예제 #4
0
 private void frmClient_FormClosing(object sender, FormClosingEventArgs e)
 {
     if (net.CanWrite == true)
     {
         NetMsg msg = new NetMsg();
         msg.msg = "QUIT";
         byte[] tmp = XuLie.ObjToByte(msg);
         try
         {
             net.Write(tmp, 0, tmp.Length);
         }
         catch (IOException)
         {
             textBox1.Text += "已经从服务器断开连接\r\n";
             Client.Close();
             Client = null;
             return;
         }
     }
     Client = null;
     GC.Collect();
     Application.ExitThread();
 }
예제 #5
0
파일: XuLieHua.cs 프로젝트: anthony6li/Work
 private void ThSub()
 {
     try
     {
         while (Client != null)
         {
             NetworkStream Net = Client.GetStream();
             if (Net.DataAvailable == true) //有数据。
             {
                 byte[] tmp = new byte[1024];
                 if (Net.CanRead == true)
                 {
                     MemoryStream memory = new MemoryStream();
                     memory.Position = 0;
                     int len = 1;
                     while (len != 0)
                     {
                         if (Net.DataAvailable == false)
                         {
                             break;
                         }
                         len = Net.Read(tmp, 0, tmp.Length);
                         memory.Write(tmp, 0, len);
                     }
                     log.LogWriter("接收完毕");
                     NetMsg msg = (NetMsg)XuLie.ByteToObj(memory.ToArray());
                     log.LogWriter("序列化完毕");
                     TcpClient tcpclient = new TcpClient();
                     log.LogWriter("建立TCP对象");
                     if (msg.Fip != null) //非心跳包。
                     {
                         try
                         {
                             tcpclient.Connect(msg.JieIP, msg.port);
                             NetworkStream SubNet = tcpclient.GetStream();
                             byte[]        Tmp    = XuLie.ObjToByte(msg);
                             SubNet.Write(Tmp, 0, Tmp.Length);
                         }
                         catch (SocketException)
                         {
                             msg.msg = "对方不在线";
                             byte[] Tmp = XuLie.ObjToByte(msg);
                             Net.Write(Tmp, 0, Tmp.Length);
                         }
                     }
                     else
                     {
                         if (msg.msg == "QUIT")
                         {
                             Arr.Remove(Client);
                             return;
                         }
                     }
                     tcpclient.Close();
                     GC.Collect();
                 }
             }
             else //没有数据。
             {
             }
             Thread.Sleep(1000);
         }
     }
     catch
     {
         Arr.Remove(Client);
         th.Abort();
     }
 }