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(); } } } } }
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; } } }