Socket测试工具包的开发(TCP UDP)

Socket测试工具包的开发

第一阶段,先开发客户端,第二阶段 开发服务端.

1.GPS坐标数据的解析与转化, 比如开始和结尾判断后,中间取字符串的方式. 使用什么样的编码.

2.Json数据的解析与转化,快速的发送类的一种方式,不用考虑那么多的字节转化方式

3.最简单的是发送字符串,这样的功能市面上都有。   我要能够发送字节串,可以写一个16进制串,然后发送出去. 可以定时发送.

4.多个客户端同时发送数据. 模拟数量,然后以列表的形式看发送和返回的数据.

5.添加的测试服务器和设置的参数能够保存下来,下次仍然能够使用.

(一)主窗体

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Text;
  7 using System.Windows.Forms;
  8 using SocketTool.Core;
  9 using System.Diagnostics;
 10 
 11 namespace SocketTool
 12 {
 13     public partial class MainForm : Form
 14     {
 15         public MainForm()
 16         {
 17             InitializeComponent();
 18         }
 19 
 20         private TreeNode rootNode1;
 21         private TreeNode rootNode2;
 22         private int index1 = 1;
 23         private int index2 = 1;
 24         private int pageIndex = 0;
 25 
 26         private List<Form> pageList = new List<Form>();
 27         private List<SocketInfo> socketInfoList = new List<SocketInfo>();
 28 
 29         private string XMLFileName = "socketinfo.xml";
 30 
 31         private void Form1_Load(object sender, EventArgs e)
 32         {
 33             rootNode1 = new TreeNode("客户终端", 5, 5);
 34             this.deviceTree.Nodes.Add(rootNode1);
 35             rootNode2 = new TreeNode("服务器终端", 6, 6);
 36             this.deviceTree.Nodes.Add(rootNode2);
 37             
 38             try
 39             {
 40                 //SocketInfo[] sis = MySerializer.DeSerialize(XMLFileName);
 41                 socketInfoList = MySerializer.Deserialize<List<SocketInfo>>(XMLFileName);
 42                 //SocketInfo[] sis = MySerializer.Deserialize<SocketInfo[]>(XMLFileName);
 43 
 44                 foreach(SocketInfo si in socketInfoList)
 45                 {
 46                     if(si.Type == "Server")
 47                     {
 48                         AddServerFormNode(si.Name, si);
 49                     }else{
 50                         AddClientFormNode(si.Name, si);
 51                     }
 52                 }
 53             }
 54             catch (System.Exception ex)
 55             {
 56                 Debug.WriteLine(ex.Message);
 57                 Debug.WriteLine(ex.StackTrace);
 58             }
 59         }
 60 
 61         private void AddClientFormNode(string name, SocketInfo si)
 62         {
 63             TreeNode ch = rootNode1.Nodes.Add(name, name, 7, 7);
 64             index1++;
 65             ClientForm form2 = new ClientForm();
 66             if(si != null)
 67                form2.SocketInfo = si;
 68             TabPage tp = addPage(name, form2);
 69             tp.ImageIndex = 2;
 70             ch.Tag = tp;
 71             rootNode1.ExpandAll();
 72             deviceTree.SelectedNode = ch;
 73         }
 74 
 75         private void AddServerFormNode(string name, SocketInfo si)
 76         {
 77             TreeNode ch = rootNode2.Nodes.Add(name, name, 8, 8);
 78             index2++;
 79 
 80             ServerForm form2 = new ServerForm();
 81             if (si != null)
 82                 form2.SocketInfo = si;
 83             TabPage tp = addPage(name, form2);
 84             ch.Tag = tp;
 85             tp.ImageIndex = 3;
 86             rootNode2.ExpandAll();
 87             deviceTree.SelectedNode = ch;
 88         }
 89 
 90 
 91         private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
 92         {
 93             if(e.ClickedItem.Name == "tsbAddClient")
 94             {
 95                 string name = "客户端" + index1;
 96                 AddClientFormNode(name, null);
 97             }
 98             else if (e.ClickedItem.Name == "tsbAddServer")
 99             {
100                 string name = "服务器端" + index2;
101                 AddServerFormNode(name, null);
102             }
103             else if (e.ClickedItem.Name == "tsbAbout")
104             {
105                 Process.Start("iexplore.exe", "www.ltmonitor.com");
106             }
107             else if (e.ClickedItem.Name == "tsbDelete")
108             {
109                 TreeNode tn = this.deviceTree.SelectedNode;
110 
111                 if (tn.Level < 1)
112                 {
113                     return;
114                 }
115 
116                 TabPage tp = (TabPage)tn.Tag;
117                 this.tabControl1.TabPages.Remove(tp);
118 
119                 tn.Parent.Nodes.Remove(tn);
120             }
121         }
122 
123         private TabPage addPage(string pageText, Form form)
124         {
125             form.TopLevel = false;
126             form.Dock = DockStyle.Fill;
127             TabPage Page = this.tabPage1;
128             if (pageIndex == 0)
129             {
130                 Page.Controls.Add(form);
131             }
132             else
133             {                
134                 Page = new TabPage();
135                 Page.ImageIndex = 3;
136                 Page.Name = "Page" + pageIndex.ToString();
137                 Page.TabIndex = pageIndex;
138                 this.tabControl1.Controls.Add(Page);
139                 Page.Controls.Add(form);
140                 this.tabControl1.SelectedTab = Page;
141 
142             }
143             Page.Text = pageText;
144             pageIndex++;
145 
146             form.Show();
147             pageList.Add(form);
148             return Page;
149         }
150 
151         private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
152         {
153             //SocketInfo si = new SocketInfo();
154             //si.Name = "服务器端";
155             //socketList.Add(si);
156             socketInfoList = new List<SocketInfo>();
157             foreach(TreeNode tn in this.deviceTree.Nodes)
158             {
159                 foreach (TreeNode ctn in tn.Nodes)
160                 {
161                     TabPage tp = (TabPage)ctn.Tag;
162                     if(tp != null)
163                         tp.Text = ctn.Text;
164                     foreach (Form f in tp.Controls)
165                     {
166                         ISocketInfo isi = (ISocketInfo)f;
167                         isi.SocketInfo.Name = tp.Text;
168                         f.Close();
169                         socketInfoList.Add(isi.SocketInfo);
170                     }
171                 }
172             }
173             
174 
175             MySerializer.Serialize(socketInfoList, XMLFileName);
176         }
177 
178         private void deviceTree_AfterSelect(object sender, TreeViewEventArgs e)
179         {
180             if (e.Node.Level == 1)
181             {
182                 TabPage tp = (TabPage)e.Node.Tag;
183 
184                 this.tabControl1.SelectedTab = tp;
185             }
186         }
187 
188        
189        
190     }
191 }
View Code

(二) 客户端窗体

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Text;
  7 using System.Windows.Forms;
  8 using SocketTool.Core;
  9 using System.Threading;
 10 using System.Diagnostics;
 11 
 12 namespace SocketTool
 13 {
 14     public partial class ClientForm : Form, ISocketInfo
 15     {
 16         public ClientForm()
 17         {
 18             InitializeComponent();
 19             SocketInfo = new SocketInfo();
 20 
 21         }
 22 
 23         //private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(ClientForm));  
 24         private IClient socketClient = new CommTcpClient();
 25         private Thread HeartOutgoingThread;
 26         private Thread SendOutgoingThread ;
 27 
 28         private int sendInterval = 0;
 29         private Boolean IsAutoSend;
 30 
 31         private Boolean continueSend = false;
 32 
 33         private string loginContent;
 34         private string heartContent;
 35         private string sendContent;
 36 
 37         private string errorMsg = "";
 38 
 39         public SocketInfo SocketInfo {get;set;}
 40 
 41         private void btnSend_Click(object sender, EventArgs e)
 42         {
 43             if (rbUdp.Checked) 
 44                 socketClient = new CommUdpClient();
 45 
 46             socketClient.OnDataReceived += new ReceivedHandler(ListenMessage);
 47             socketClient.OnSocketError += new SocketErrorHandler(ListenErrorMessage);
 48             string ServerIP = this.txtIP.Text;
 49             errorMsg = "";
 50             if (string.IsNullOrEmpty(ServerIP))
 51                 errorMsg += "请输入合法的IP地址";
 52             try
 53             {
 54                 int Port = int.Parse(this.txtPort.Text);
 55 
 56                 socketClient.Init(ServerIP, Port);
 57             }
 58             catch (Exception ex)
 59             {
 60                 errorMsg += "请输入合法的端口";
 61             }
 62             loginContent = this.rtLoginData.Text;
 63             heartContent = this.rtHeartData.Text;
 64             sendContent = this.rtSendData.Text;
 65             if (string.IsNullOrEmpty(sendContent))
 66                 errorMsg += "请输入要发送的内容";
 67             sendInterval = int.Parse(txtInterval.Text) * 1000;
 68             if (cbAutoSend.Checked)
 69             {
 70                 try
 71                 {
 72                     sendInterval = int.Parse(txtInterval.Text) * 1000;
 73                 }
 74                 catch (Exception ex)
 75                 {
 76                     errorMsg += "请输入整数的发送时间间隔";
 77                 }
 78                 
 79                 IsAutoSend = true;
 80             }
 81             if (string.IsNullOrEmpty(errorMsg) == false)
 82             {
 83                 MessageBox.Show(errorMsg);
 84                 return;
 85             }
 86             continueSend = true;
 87             btnDisconnect.Enabled = true;
 88             btnSend.Enabled = IsAutoSend == false;
 89 
 90             HeartOutgoingThread = new Thread(new ThreadStart(HeartThreadFunc));
 91             HeartOutgoingThread.Start();
 92 
 93             SendOutgoingThread = new Thread(new ThreadStart(SendThreadFunc));
 94             SendOutgoingThread.Start();
 95             /**
 96             else
 97             {
 98                 if (string.IsNullOrEmpty(errorMsg) == false)
 99                 {
100                     MessageBox.Show(errorMsg);
101                     return;
102                 }
103                 byte[] data = System.Text.Encoding.Default.GetBytes(sendContent);
104                 try
105                 {
106                     tcpClient.SendData(data);
107                     btnDisconnect.Enabled = true;
108                 }
109                 catch (Exception ex)
110                 {
111                     MessageBox.Show("发送数据出错,无法连接服务器");
112                 }
113             }
114              */
115             
116         }
117 
118         private void SendThreadFunc()
119         {
120             //发送登录数据包
121             byte[] loginData = System.Text.Encoding.Default.GetBytes(loginContent);
122 
123             if (rbHex.Checked)
124             {
125                 loginData = ParseUtil.ToByesByHex(loginContent);
126             }
127             socketClient.Send(loginData);
128 
129             //发送一般数据包
130             while (continueSend)
131             {
132                 byte[] data = System.Text.Encoding.Default.GetBytes(sendContent);
133 
134                 if (rbHex.Checked)
135                 {
136                     data = ParseUtil.ToByesByHex(sendContent);
137                 }
138 
139                 try
140                 {
141                     socketClient.Send(data);
142                 }
143                 catch (Exception ex)
144                 {
145                     ListenMessage(0, "", ex.Message);
146                     break;
147                 }
148                 if (IsAutoSend == false)
149                     break;
150                 Thread.Sleep(sendInterval);
151 
152             }
153         }
154 
155         private void HeartThreadFunc()
156         {
157             while (continueSend)
158             {
159                 byte[] data = System.Text.Encoding.Default.GetBytes(heartContent);
160 
161                 if (rbHex.Checked)
162                 {
163                     data = ParseUtil.ToByesByHex(heartContent);
164                 }
165 
166                 try
167                 {
168                     socketClient.Send(data);
169                 }
170                 catch (Exception ex)
171                 {
172                     ListenMessage(0, "", ex.Message);
173                     break;
174                 }
175                 if (IsAutoSend == false)
176                     break;
177                 Thread.Sleep(int.Parse(txtHeartTime.Text) * 1000);
178 
179             }
180         }
181         public void ListenErrorMessage(object o, SocketEventArgs e)
182         {
183             string errorMsg = "[" + e.ErrorCode + "]" + SocketUtil.DescrError(e.ErrorCode);
184 
185             ListenMessage((int)o, "Socket错误", errorMsg);
186 
187         }
188 
189         private void ListenMessage(object ID, string type, string msg)
190         {
191             if (PacketView.InvokeRequired)
192             {
193                 try
194                 {
195                     MsgHandler d = new MsgHandler(ListenMessage);
196                     this.Invoke(d, new object[] {0,type, msg});
197                 }
198                 catch (System.Exception ex)
199                 {
200                     //logger.Error(ex.Message);
201                     //logger.Error(ex.StackTrace);
202                 }
203             }
204             else
205             {
206                 if (type == "Socket错误")
207                 {
208                     continueSend = false;
209                     btnDisconnect.Enabled = false;
210                     btnSend.Enabled = true;
211                 }
212                 if (PacketView.Items.Count > 200)
213                     PacketView.Items.Clear();
214 
215 
216                 ListViewItem item = PacketView.Items.Insert(0, "" + PacketView.Items.Count);
217 
218                 //int length = e.Data.Length;
219                 string strDate = DateTime.Now.ToString("HH:mm:ss");
220                 item.SubItems.Add(strDate);
221                 item.SubItems.Add(msg);
222                 //item.SubItems.Add("" + length);
223             }
224 
225         }
226 
227         public void ListenMessage(object o, ReceivedEventArgs e)
228         {
229             if (PacketView.InvokeRequired)
230             {
231                 try
232                 {
233                     ReceivedHandler d = new ReceivedHandler(ListenMessage);
234                     this.Invoke(d, new object[] {o, e });
235                 }
236                 catch (System.Exception ex)
237                 {
238                     //logger.Error(ex.Message);
239                     //logger.Error(ex.StackTrace);
240                 }
241             }
242             else
243             {
244                 if (PacketView.Items.Count > 200)
245                     PacketView.Items.Clear();
246 
247                 ListViewItem item = PacketView.Items.Insert(0, "" + PacketView.Items.Count);
248 
249                 int length = e.Data.Length;
250                 string strDate = DateTime.Now.ToString("HH:mm:ss");
251                 item.SubItems.Add(strDate);
252                 string msg = ParseUtil.ParseString(e.Data, length);
253                 if (rbHex.Checked)
254                     msg = ParseUtil.ToHexString(e.Data, length);
255                 item.SubItems.Add(msg);
256                 item.SubItems.Add("" + length);
257 
258                 if (cbLog.Checked)
259                 {
260                     //logger.Info(e.RemoteHost.ToString() + " " + msg);
261                 }
262                 //item.SubItems.Add("" + msg.MsgContentDesc);
263             }
264         }
265 
266         private void cbAutoSend_CheckedChanged(object sender, EventArgs e)
267         {
268             this.txtInterval.Enabled = cbAutoSend.Checked;
269         }
270 
271         private void btnDisconnect_Click(object sender, EventArgs e)
272         {
273             continueSend = false;
274             try
275             {
276                 HeartOutgoingThread.Abort();
277                 SendOutgoingThread.Abort();
278                 if (socketClient != null)
279                     socketClient.Close();
280             }
281             catch (Exception ex)
282             {
283             }
284 
285             this.btnSend.Enabled = true;
286         }
287 
288         private void ClientForm_FormClosing(object sender, FormClosingEventArgs e)
289         {
290 
291             SocketInfo.ServerIp = this.txtIP.Text;
292             try
293             {
294                 SocketInfo.Port = int.Parse(this.txtPort.Text);
295             }
296             catch (System.Exception ex)
297             {
298 
299             }
300 
301             SocketInfo.Protocol = rbTcp.Checked ? "Tcp" : "Udp";
302             SocketInfo.Format = rbAscII.Checked ? "AscII" : "Hex";
303             SocketInfo.Type = "Client";
304             SocketInfo.ServerIp = this.txtIP.Text;
305             SocketInfo.Data = this.rtSendData.Text;
306 
307             SocketInfo.IsAuto = cbAutoSend.Checked;
308             try
309             {
310                 SocketInfo.Port = int.Parse(this.txtPort.Text);
311             }
312             catch (Exception ex)
313             {
314                 //errorMsg += "请输入合法的端口";
315             }
316             /*
317             continueSend = false;
318             try
319             {
320                 HeartOutgoingThread.Abort();
321                 SendOutgoingThread.Abort();
322                 if (socketClient != null)
323                     socketClient.Close();
324             }
325             catch (Exception ex)
326             {
327             }
328 
329             this.btnSend.Enabled = true;
330              */
331 
332         }
333 
334         private void btnClearLog_Click(object sender, EventArgs e)
335         {
336             this.PacketView.Clear();
337         }
338 
339         private void ClientForm_Load(object sender, EventArgs e)
340         {
341             this.txtIP.Text = SocketInfo.ServerIp;
342             rbTcp.Checked = SocketInfo.Protocol == "Tcp";
343             rbUdp.Checked = SocketInfo.Protocol != "Tcp";
344             rbAscII.Checked = SocketInfo.Format == "AscII";
345             rbHex.Checked = SocketInfo.Format != "AscII";
346             this.txtPort.Text = "" + SocketInfo.Port;
347             this.rtSendData.Text = SocketInfo.Data;
348 
349             cbAutoSend.Checked = SocketInfo.IsAuto;
350 
351         }
352 
353         private void btnOpenLog_Click(object sender, EventArgs e)
354         {
355             Process.Start("notepad.exe", "client.log");
356         }
357 
358         private void panel1_Paint(object sender, PaintEventArgs e)
359         {
360 
361         }
362     }
363 }
View Code

(三) 服务器端

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Text;
  7 using System.Windows.Forms;
  8 using SocketTool.Core;
  9 using System.Threading;
 10 using System.Diagnostics;
 11 
 12 namespace SocketTool
 13 {
 14     public partial class ServerForm : Form, ISocketInfo
 15     {
 16         public ServerForm()
 17         {
 18             InitializeComponent();
 19             SocketInfo = new SocketInfo();
 20 
 21         }
 22 
 23         //private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(ServerForm));  
 24         private IServer commServer = new CommTcpServer();
 25 
 26         private Thread refreshThread;
 27 
 28         private Boolean continueRefresh = true;
 29 
 30         private List<IConnection> conns = new List<IConnection>();
 31 
 32         public SocketInfo SocketInfo { get; set; }
 33 
 34         private void btnSend_Click(object sender, EventArgs e)
 35         {
 36         }
 37 
 38         private void btnListen_Click(object sender, EventArgs e)
 39         {
 40 
 41             if (rbUdp.Checked)
 42                 commServer = new CommUdpServer();
 43             int port = int.Parse(this.txtPort.Text);
 44 
 45             commServer.Init(null, port);
 46             commServer.OnDataReceived += new ReceivedHandler(ListenMessage);
 47             commServer.OnSocketError += new SocketErrorHandler(ListenErrorMessage);
 48 
 49             //refreshThread = new Thread(new ThreadStart(RefreshConnection));
 50             if(refreshConnectionWorker.IsBusy == false)
 51                refreshConnectionWorker.RunWorkerAsync();
 52             try
 53             {
 54                 commServer.Listen();
 55                 btnListen.Enabled = false;
 56                 btnStopListen.Enabled = true;
 57                 ListenMessage(0, "", "启动监听成功,端口:" + port);
 58             }
 59             catch (Exception ex)
 60             {
 61                 MessageBox.Show("监听失败,端口可能被占用");
 62             }
 63         }
 64 
 65         public void ListenErrorMessage(object o, SocketEventArgs e)
 66         {
 67             string errorMsg = "[" + e.ErrorCode + "]" + SocketUtil.DescrError(e.ErrorCode);
 68 
 69             ListenMessage(o, "Socket错误", errorMsg);
 70 
 71         }
 72         private void ListenMessage(object ID, string type, string msg)
 73         {
 74             if (PacketView.InvokeRequired)
 75             {
 76                 try
 77                 {
 78                     MsgHandler d = new MsgHandler(ListenMessage);
 79                     this.Invoke(d, new object[] { ID,type, msg });
 80                 }
 81                 catch (System.Exception ex)
 82                 {
 83                     //logger.Error(ex.Message);
 84                     //logger.Error(ex.StackTrace);
 85                 }
 86             }
 87             else
 88             {
 89                 if (PacketView.Items.Count > 200)
 90                     PacketView.Items.Clear();
 91 
 92 
 93                 ListViewItem item = PacketView.Items.Insert(0, "" + PacketView.Items.Count);
 94 
 95                 item.SubItems.Add("" + ID);
 96                 item.SubItems.Add("");
 97                 //int length = e.Data.Length;
 98                 string strDate = DateTime.Now.ToString("HH:mm:ss");
 99                 item.SubItems.Add(strDate);
100                 item.SubItems.Add(msg);
101                 //item.SubItems.Add("" + length);
102             }
103         }
104 
105         public void ListenMessage(object o, ReceivedEventArgs e)
106         {
107             if (PacketView.InvokeRequired)
108             {
109                 
110                     ReceivedHandler d = new ReceivedHandler(ListenMessage);
111                     this.Invoke(d, new object[] { o, e});
112             }
113             else
114             {
115                 byte[] data = e.Data;
116                 int length = data.Length;
117                 Boolean isEcho = this.cbAutoSend.Checked;
118                 string connId = "" + o;
119                 if (isEcho)
120                 {
121                     commServer.Send(connId, data, data.Length);
122                 }
123 
124                 
125                 if (PacketView.Items.Count > 200)
126                     PacketView.Items.Clear();
127 
128                 ListViewItem item = PacketView.Items.Insert(0, "" + PacketView.Items.Count);
129                 item.SubItems.Add("" + connId);
130                 item.SubItems.Add("" + e.RemoteHost.ToString());
131 
132                 string msg = ParseUtil.ParseString(data, length);
133                 if (rbHex.Checked)
134                 {
135                     msg = ParseUtil.ToHexString(data, length);
136                 }
137 
138                 string strDate = DateTime.Now.ToString("HH:mm:ss");
139                 item.SubItems.Add(strDate);
140 
141                 item.SubItems.Add(msg);
142                 item.SubItems.Add("" + length);
143                 if (cbLog.Checked)
144                 {
145                     //logger.Info(e.RemoteHost.ToString() + " " + msg);
146                 }
147                 //item.SubItems.Add("" + msg.MsgContentDesc);
148             }
149         }
150 
151         private void btnStopListen_Click(object sender, EventArgs e)
152         {
153             commServer.Close();
154 
155             btnListen.Enabled = true;
156             btnStopListen.Enabled = false;
157         }
158 
159         private void ServerForm_FormClosing(object sender, FormClosingEventArgs e)
160         {
161 
162             SocketInfo.ServerIp = this.txtIP.Text;
163             try
164             {
165                 SocketInfo.Port = int.Parse(this.txtPort.Text);
166             }
167             catch (System.Exception ex)
168             {
169                 
170             }
171             SocketInfo.Protocol = rbTcp.Checked ? "Tcp" : "Udp";
172             SocketInfo.Format = rbAscII.Checked ? "AscII" : "Hex";
173             SocketInfo.Type = "Server";
174             SocketInfo.Data = this.rtbData.Text;
175             SocketInfo.IsAuto = cbAutoSend.Checked;
176             refreshConnectionWorker.CancelAsync();
177             commServer.Close();
178         }
179 
180         private void btnClearLog_Click(object sender, EventArgs e)
181         {
182             this.PacketView.Items.Clear();
183         }
184 
185         private void refreshConnectionWorker_DoWork(object sender, DoWorkEventArgs e)
186         {
187              int m = 0;
188              while (continueRefresh)
189              {
190                  conns = commServer.GetConnectionList();
191                  refreshConnectionWorker.ReportProgress(m);
192 
193                  Thread.Sleep(1000);
194              }
195         }
196 
197         private void refreshConnectionWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
198         {
199             try
200             {
201 
202                 connectionView.Items.Clear();
203                 foreach (IConnection ic in conns)
204                 {
205 
206                     ListViewItem item = connectionView.Items.Insert(0, "" + connectionView.Items.Count);
207                     item.Tag = ic.ID;
208                     item.SubItems.Add("" + ic.ID);
209                     //int length = e.Data.Length;
210                     string strDate = DateTime.Now.ToString("dd HH:mm:ss");
211                     item.SubItems.Add(ic.CreateDate.ToString("dd HH:mm:ss"));
212                     item.SubItems.Add(ic.ClientIP.ToString());
213                     item.SubItems.Add(ic.OnlineDate.ToString("dd HH:mm:ss"));
214 
215                 }
216             }
217             catch (System.Exception ex)
218             {
219                 //logger.Error(ex.Message);
220                 //logger.Error(ex.StackTrace);
221             }
222         }
223 
224         private string selectedConnectionID;
225         private void connectionView_SelectedIndexChanged(object sender, EventArgs e)
226         {
227             foreach (ListViewItem item in connectionView.SelectedItems)
228             {
229                 selectedConnectionID = ""+item.Tag;
230 
231                 txtConn.Text = item.SubItems[3].Text;
232             }
233             
234         }
235 
236         private void PacketView_SelectedIndexChanged(object sender, EventArgs e)
237         {
238             foreach (ListViewItem item in PacketView.SelectedItems)
239             {
240                 selectedConnectionID = ""+item.Tag;
241                 rtbData.Text = item.SubItems[4].Text;
242             }
243         }
244 
245         private void ServerForm_Load(object sender, EventArgs e)
246         {
247             this.txtIP.Text = SocketInfo.ServerIp;
248             rbTcp.Checked = SocketInfo.Protocol == "Tcp";
249             rbUdp.Checked = SocketInfo.Protocol != "Tcp";
250             rbAscII.Checked = SocketInfo.Format == "AscII";
251             rbHex.Checked = SocketInfo.Format != "AscII";
252             this.txtPort.Text = "" + SocketInfo.Port;
253 
254             cbAutoSend.Checked = SocketInfo.IsAuto;
255             this.rtbData.Text = SocketInfo.Data;
256         }
257 
258         private void btnOpenLog_Click(object sender, EventArgs e)
259         {
260             Process.Start("notepad.exe", "server.log");
261         }
262 
263     }
264 }
View Code
原文地址:https://www.cnblogs.com/jiangyongyawen/p/4386781.html