コード例 #1
0
 public void SendMsg(string msg)
 {
     if (msg == string.Empty)
     {
         MessageBox.Show("发送区内容为空!", "警告");
     }
     else
     {
         if (NetworkForm.network.listBoxOnline.SelectedItems.Count == 0)
         {
             this.ShowMsg("【未选择客户端】则发送给所有的客户端!");
             foreach (var item in NetworkForm.network.listBoxOnline.Items)
             {
                 Socket client = null;
                 if (dictServerSocketConn.TryGetValue(item.ToString(), out client))
                 {
                     byte[] bytes = null;
                     if (NetworkForm.network.radioBtnSendGBK.Checked)
                     {
                         bytes = Encoding.GetEncoding("GBK").GetBytes(msg);
                         if (NetworkForm.network.chboxDisplaySend.Checked && NetworkForm.network.radioBtnHEXSendYes.Checked)
                         {
                             this.ShowMsg("【发送到:" + item.ToString() + "】" + MyTools.BytesToHexString(bytes, true));
                         }
                         else if (NetworkForm.network.chboxDisplaySend.Checked && NetworkForm.network.radioBtnHEXSendNo.Checked)
                         {
                             this.ShowMsg("【发送到:" + item.ToString() + "】" + msg);
                         }
                         else
                         {
                         }
                     }
                     else
                     {
                         bytes = Encoding.GetEncoding("UTF-8").GetBytes(msg);
                         if (NetworkForm.network.chboxDisplaySend.Checked && NetworkForm.network.radioBtnHEXSendYes.Checked)
                         {
                             this.ShowMsg("【发送到:" + item.ToString() + "】" + MyTools.BytesToHexString(bytes, true));
                         }
                         else if (NetworkForm.network.chboxDisplaySend.Checked && NetworkForm.network.radioBtnHEXSendNo.Checked)
                         {
                             this.ShowMsg("【发送到:" + item.ToString() + "】" + msg);
                         }
                         else
                         {
                         }
                     }
                     client.Send(bytes);
                     NetworkForm.network.textBoxSendBytes.Text = (int.Parse(NetworkForm.network.textBoxSendBytes.Text) + bytes.Length).ToString();
                 }
             }
         }
         else
         {
             foreach (var item in NetworkForm.network.listBoxOnline.SelectedItems)
             {
                 Socket client = null;
                 if (dictServerSocketConn.TryGetValue(item.ToString(), out client))
                 {
                     byte[] bytes = null;
                     if (NetworkForm.network.radioBtnSendGBK.Checked)
                     {
                         bytes = Encoding.GetEncoding("GBK").GetBytes(msg);
                     }
                     else
                     {
                         bytes = Encoding.GetEncoding("UTF-8").GetBytes(msg);
                     }
                     client.Send(bytes);
                     NetworkForm.network.textBoxSendBytes.Text = (int.Parse(NetworkForm.network.textBoxSendBytes.Text) + bytes.Length).ToString();
                 }
             }
         }
     }
 }
コード例 #2
0
        private void RecMsg(object sokConnectionparn)
        {
            Socket sokClient = sokConnectionparn as Socket;

            while (true)
            {
                // 定义一个缓存区
                byte[] arrMsgRec = new byte[1024];
                byte[] tmp;
                // 将接收到的数据保存
                int length = -1;
                try
                {
                    length = sokClient.Receive(arrMsgRec);
                    if (length > 0)
                    {
                        tmp = new byte[length];
                        NetworkForm.network.textBoxRecvBytes.Text = (int.Parse(NetworkForm.network.textBoxRecvBytes.Text) + length).ToString();
                        Array.Copy(arrMsgRec, tmp, length);
                        if (NetworkForm.network.chkbHEX.Checked)
                        {
                            ShowMsg("【" + sokClient.RemoteEndPoint.ToString() + "】" + MyTools.BytesToHexString(tmp, true).Trim());
                        }
                        else
                        {
                            if (NetworkForm.network.radioButtonUtf8.Checked)
                            {
                                ShowMsg("【" + sokClient.RemoteEndPoint.ToString() + "】" + Encoding.GetEncoding("UTF-8").GetString(tmp));
                            }
                            else
                            {
                                ShowMsg("【" + sokClient.RemoteEndPoint.ToString() + "】" + Encoding.GetEncoding("GBK").GetString(tmp));
                            }
                        }
                        if (NetworkForm.network.textSendRegion1.Text != null && NetworkForm.network.textSendRegion1.Text != string.Empty && NetworkForm.network.checkBoxSend1.Checked)
                        {
                            if (NetworkForm.network.textSendInterval.Text != string.Empty)
                            {
                                int sleep = int.Parse(NetworkForm.network.textSendInterval.Text);
                                Thread.Sleep(sleep);
                            }
                            byte[] bytes = Encoding.GetEncoding("GBK").GetBytes(NetworkForm.network.textSendRegion1.Text);
                            sokClient.Send(bytes);
                            NetworkForm.network.textBoxSendBytes.Text = (int.Parse(NetworkForm.network.textBoxSendBytes.Text) + bytes.Length).ToString();
                        }
                        if (NetworkForm.network.textSendRegion2.Text != null && NetworkForm.network.textSendRegion2.Text != string.Empty && NetworkForm.network.checkBoxSend2.Checked)
                        {
                            if (NetworkForm.network.textSendInterval.Text != string.Empty)
                            {
                                int sleep = int.Parse(NetworkForm.network.textSendInterval.Text);
                                Thread.Sleep(sleep);
                            }
                            byte[] bytes = Encoding.GetEncoding("GBK").GetBytes(NetworkForm.network.textSendRegion2.Text);
                            sokClient.Send(bytes);
                            NetworkForm.network.textBoxSendBytes.Text = (int.Parse(NetworkForm.network.textBoxSendBytes.Text) + bytes.Length).ToString();
                        }
                        if (NetworkForm.network.textSendRegion3.Text != null && NetworkForm.network.textSendRegion3.Text != string.Empty && NetworkForm.network.checkBoxSend3.Checked)
                        {
                            if (NetworkForm.network.textSendInterval.Text != string.Empty)
                            {
                                int sleep = int.Parse(NetworkForm.network.textSendInterval.Text);
                                Thread.Sleep(sleep);
                            }
                            byte[] bytes = Encoding.GetEncoding("GBK").GetBytes(NetworkForm.network.textSendRegion3.Text);
                            sokClient.Send(bytes);
                            NetworkForm.network.textBoxSendBytes.Text = (int.Parse(NetworkForm.network.textBoxSendBytes.Text) + bytes.Length).ToString();
                        }
                    }
                    else
                    {
                        // 从 通信套接字 集合中删除被中断连接的通信套接字;
                        dictServerSocketConn.Remove(sokClient.RemoteEndPoint.ToString());
                        // 从通信线程集合中删除被中断连接的通信线程对象;
                        dictServerSocketThread.Remove(sokClient.RemoteEndPoint.ToString());
                        // 从列表中移除被中断的连接IP
                        NetworkForm.network.listBoxOnline.Items.Remove(sokClient.RemoteEndPoint.ToString());
                        ShowMsg("【" + sokClient.RemoteEndPoint.ToString() + "】" + "断开连接\r\n");

                        break;
                    }
                }
                catch (SocketException se)
                {
                    if (ServerFlag)
                    {
                        // 从通信套接字集合中删除被中断连接的通信套接字;
                        dictServerSocketConn.Remove(sokClient.RemoteEndPoint.ToString());
                        // 从通信线程集合中删除被中断连接的通信线程对象;
                        dictServerSocketThread.Remove(sokClient.RemoteEndPoint.ToString());
                        // 从列表中移除被中断的连接IP
                        NetworkForm.network.listBoxOnline.Items.Remove(sokClient.RemoteEndPoint.ToString());
                        ShowMsg("【异常消息】:" + se.Message + "\r\n");
                    }

                    break;
                }
                catch (Exception se)
                {
                    if (ServerFlag)
                    {
                        // 从 通信套接字 集合中删除被中断连接的通信套接字;
                        dictServerSocketConn.Remove(sokClient.RemoteEndPoint.ToString());
                        // 从通信线程集合中删除被中断连接的通信线程对象;
                        dictServerSocketThread.Remove(sokClient.RemoteEndPoint.ToString());
                        // 从列表中移除被中断的连接IP
                        NetworkForm.network.listBoxOnline.Items.Remove(sokClient.RemoteEndPoint.ToString());
                        ShowMsg("【异常消息】:" + se.Message + "\r\n");
                    }
                    break;
                }
            }
        }