自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C# Socket報(bào)文和端口測(cè)試工具的開發(fā)(提供源碼)

開發(fā) 測(cè)試
因?yàn)樽约航?jīng)常做Socket開發(fā),經(jīng)常要調(diào)試和維護(hù)多個(gè)服務(wù)器端和客戶端的通信、報(bào)文數(shù)據(jù)等,網(wǎng)上的工具都是功能簡(jiǎn)單,用的不爽,所以一直都想自己寫一個(gè)。

因?yàn)樽约航?jīng)常做Socket開發(fā),經(jīng)常要調(diào)試和維護(hù)多個(gè)服務(wù)器端和客戶端的通信、報(bào)文數(shù)據(jù)等,網(wǎng)上的工具都是功能簡(jiǎn)單,用的不爽,所以一直都想自己寫一個(gè)。

Socket測(cè)試工具Socket測(cè)試工具   Socket測(cè)試工具源碼Socket測(cè)試工具源碼   

年底不忙了,終于寫了一個(gè),提供給大家使用,源碼可以隨便使用和修改,歡迎多提意見,讓這個(gè)工具更易用,方便Socket編程開發(fā)人魚。主要的功能如下:

1.建立Socket測(cè)試服務(wù)器端和測(cè)試客戶端,并向其他端發(fā)送或接受報(bào)文數(shù)據(jù),支持自動(dòng)發(fā)送和自動(dòng)應(yīng)答,支持UDP和TCP;

2.錄入的IP地址和端口等參數(shù)數(shù)據(jù)進(jìn)行本地XML序列化,下次自動(dòng)打開。(這個(gè)是我需要的,不用每次都錄入各種IP地址端口了);

3.接受或發(fā)送的報(bào)文數(shù)據(jù),可以直接保存在日志文件當(dāng)中,便于離線分析。

4.服務(wù)器端,可以查看接入的各個(gè)連接信息;

5.支持AscII和16進(jìn)制的數(shù)據(jù)發(fā)送和接收顯示。

由于界面要同時(shí)支持TCP和UDP的數(shù)據(jù)通信,所以編寫了兩個(gè)接口IServer和IClient,便于界面和通信層分開。

  1. public interface IServer  
  2.     {  
  3.         //初始化  
  4.         void Init(string serverIp, int port);  
  5.         //從服務(wù)器端給某個(gè)連接發(fā)送數(shù)據(jù)  
  6.         void Send(string connId, byte[] data, int length);  
  7.         //監(jiān)聽  
  8.         int Listen();  
  9.         //得到當(dāng)前的連接  
  10.         List<IConnection> GetConnectionList();  
  11.         //Socket事件  
  12.         event ReceivedHandler OnDataReceived;  
  13.         event SocketErrorHandler OnSocketError;  
  14.  
  15.         void Close();  
  16.     } 

為了保存參數(shù)數(shù)據(jù),所以構(gòu)造了一個(gè)SocketInfo類,對(duì)應(yīng)客戶端和服務(wù)器端,然后將這個(gè)集合序列化到XML文件中。

序列化的代碼如下:

  1. [Serializable]  
  2.     public class SocketInfo  
  3.     {  
  4.         public string Name { getset; }  
  5.         //Server端或客戶端類型  
  6.         public string Type { getset; }  
  7.         //16進(jìn)制格式或AscII  
  8.         public string Format { getset; }  
  9.  
  10.         public string ServerIp { getset; }  
  11.  
  12.         public int Port { getset; }  
  13.         //TCP或UDP  
  14.         public string Protocol { getset; }  
  15.         //報(bào)文數(shù)據(jù)  
  16.         public string Data {get;set;}  
  17.         //是否自動(dòng)發(fā)送或接收數(shù)據(jù)  
  18.         public Boolean IsAuto {get;set;}  
  19.  
  20.         public SocketInfo()  
  21.         {  
  22.             Format = "AscII";  
  23.             Protocol = "Tcp";  
  24.             Port = 8890;  
  25.             ServerIp = "127.0.0.1";  
  26.             Data = "請(qǐng)錄入測(cè)試數(shù)據(jù)";  
  27.         }  
  28.     } 
  1. public class MySerializer  
  2.     {        
  3.  
  4.         public static void Serialize<T>(T value, string xmlFileName)  
  5.         {  
  6.             if (value == null)  
  7.             {  
  8.                 return;  
  9.             }  
  10.  
  11.             XmlSerializer serializer = new XmlSerializer(typeof(T));  
  12.             XmlWriterSettings settings = new XmlWriterSettings();  
  13.             settings.Encoding = new UnicodeEncoding(falsefalse);  
  14.             settings.Indent = false;  
  15.             settings.OmitXmlDeclaration = false;  
  16.             FileStream fs = new FileStream(xmlFileName, FileMode  
  17.                 .OpenOrCreate);  
  18.  
  19.             serializer.Serialize(fs, value);  
  20.             fs.Close();  
  21.         }  
  22.  
  23.         public static T Deserialize<T>(string xmlFileName)  
  24.         {  
  25.             if (string.IsNullOrEmpty(xmlFileName))  
  26.             {  
  27.                 return default(T);  
  28.             }  
  29.  
  30.             XmlSerializer serializer = new XmlSerializer(typeof(T));  
  31.             //XmlSerializer serializer = new XmlSerializer(typeof(ArrayList));  
  32.             XmlReaderSettings settings = new XmlReaderSettings();  
  33.             //settings.  
  34.  
  35.             FileStream fs = null;  
  36.             try 
  37.             {  
  38.                 fs = new FileStream(xmlFileName, FileMode.Open);  
  39.  
  40.                 // Deserialize the content of the XML file to a Contact array   
  41.                 // utilizing XMLReader  
  42.                 XmlReader reader = new XmlTextReader(fs);  
  43.                 T contacts = (T)serializer.Deserialize(reader);  
  44.  
  45.                 return contacts;  
  46.             }  
  47.             catch (FileNotFoundException)  
  48.             {  
  49.                 // Do nothing if the file does not exists  
  50.             }  
  51.             finally 
  52.             {  
  53.                 if (fs != null) fs.Close();  
  54.             }  
  55.  
  56.             return default(T);  
  57.         }  
  58.     } 

客戶端的報(bào)文和服務(wù)器端的報(bào)文數(shù)據(jù)存放在Client.log和Server.log兩個(gè)文件當(dāng)中.主要是借助了Log4net的配置實(shí)現(xiàn)的.

  1. <log4net>  
  2.         <root>  
  3.             <level value="ALL" />  
  4.             <appender-ref ref="RollingFileAppender" />  
  5.         </root>  
  6.         <appender name="ClientLogFileAppender" type="log4net.Appender.RollingFileAppender">  
  7.             <param name="File" value="client.log"/>  
  8.             <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />  
  9.             <appendToFile value="true" />  
  10.             <rollingStyle value="Size" />  
  11.             <maxSizeRollBackups value="3" />  
  12.             <maximumFileSize value="2MB" />  
  13.             <staticLogFileName value="true" />  
  14.             <layout type="log4net.Layout.PatternLayout">  
  15.                 <conversionPattern value="記錄時(shí)間:%date 日志:%message%newline" />  
  16.             </layout>  
  17.         </appender>  
  18.  
  19.         <logger name="SocketTool.ClientForm">  
  20.             <level value="DEBUG" />  
  21.             <appender-ref ref="ClientLogFileAppender" />  
  22.         </logger>  
  23.  
  24.         <appender name="ServerLogFileAppender" type="log4net.Appender.RollingFileAppender">  
  25.             <param name="File" value="server.log"/>  
  26.             <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />  
  27.             <appendToFile value="true" />  
  28.             <rollingStyle value="Size" />  
  29.             <maxSizeRollBackups value="3" />  
  30.             <maximumFileSize value="2MB" />  
  31.             <staticLogFileName value="true" />  
  32.             <layout type="log4net.Layout.PatternLayout">  
  33.                 <conversionPattern value="記錄時(shí)間:%date 日志:%message%newline" />  
  34.             </layout>  
  35.         </appender>  
  36.  
  37.         <logger name="SocketTool.ServerForm">  
  38.             <level value="DEBUG" />  
  39.             <appender-ref ref="ServerLogFileAppender" />  
  40.         </logger>  
  41.          
  42.     </log4net> 

原文鏈接:http://www.ltmonitor.com/blog/?p=285

 

責(zé)任編輯:林師授 來(lái)源: productivity的博客
相關(guān)推薦

2009-09-01 16:45:00

C#單元測(cè)試工具

2019-08-06 08:00:00

API設(shè)計(jì)API開發(fā)測(cè)試工具

2012-12-24 22:54:31

2009-06-26 10:22:58

JSF測(cè)試

2011-05-31 18:09:05

動(dòng)態(tài)測(cè)試

2020-07-13 07:15:37

安全測(cè)試工具漏洞軟件安全

2009-03-31 09:49:40

Rational功能測(cè)試性能測(cè)試

2009-08-03 16:45:02

C#異步Socket

2009-08-18 16:45:40

C# Raw Sock

2010-12-22 14:05:26

2009-09-15 13:52:47

.NET和C#開發(fā)工具

2009-08-27 17:14:36

C# Socket

2022-01-24 16:55:09

LinuxTCP工具

2019-02-22 10:11:48

Java開發(fā)代碼

2010-06-07 17:46:46

Linux壓力測(cè)試工具

2020-07-16 07:33:44

工具安全數(shù)據(jù)

2015-06-24 10:34:42

2011-05-31 18:25:25

測(cè)試工具

2013-11-13 10:49:50

2011-10-20 10:09:14

JavaScript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)