C#Socket报文和端口测试工具的开发(提供源码)

因为自己经常做Socket开发,经常要调试和维护多个服务器端和客户端的通信、报文数据等,网上的工具都是功能简单,用的不爽,所以一直都想自己写一个。

创新互联2013年至今,是专业互联网技术服务公司,拥有项目做网站、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元荔波做网站,已为上家服务,为荔波各地企业和个人服务,联系电话:13518219792

Socket测试工具   Socket测试工具源码

年底不忙了,终于写了一个,提供给大家使用,源码可以随便使用和修改,欢迎多提意见,让这个工具更易用,方便Socket编程开发人鱼。主要的功能如下:

1.建立Socket测试服务器端和测试客户端,并向其他端发送或接受报文数据,支持自动发送和自动应答,支持UDP和TCP;

2.录入的IP地址和端口等参数数据进行本地XML序列化,下次自动打开。(这个是我需要的,不用每次都录入各种IP地址端口了);

3.接受或发送的报文数据,可以直接保存在日志文件当中,便于离线分析。

4.服务器端,可以查看接入的各个连接信息;

5.支持AscII和16进制的数据发送和接收显示。

由于界面要同时支持TCP和UDP的数据通信,所以编写了两个接口IServer和IClient,便于界面和通信层分开。

 
 
 
 
  1. public interface IServer
  2.     {
  3.         //初始化
  4.         void Init(string serverIp, int port);
  5.         //从服务器端给某个连接发送数据
  6.         void Send(string connId, byte[] data, int length);
  7.         //监听
  8.         int Listen();
  9.         //得到当前的连接
  10.         List GetConnectionList();
  11.         //Socket事件
  12.         event ReceivedHandler OnDataReceived;
  13.         event SocketErrorHandler OnSocketError;
  14.         void Close();
  15.     }

为了保存参数数据,所以构造了一个SocketInfo类,对应客户端和服务器端,然后将这个集合序列化到XML文件中。

序列化的代码如下:

 
 
 
 
  1. [Serializable]
  2.     public class SocketInfo
  3.     {
  4.         public string Name { get; set; }
  5.         //Server端或客户端类型
  6.         public string Type { get; set; }
  7.         //16进制格式或AscII
  8.         public string Format { get; set; }
  9.         public string ServerIp { get; set; }
  10.         public int Port { get; set; }
  11.         //TCP或UDP
  12.         public string Protocol { get; set; }
  13.         //报文数据
  14.         public string Data {get;set;}
  15.         //是否自动发送或接收数据
  16.         public Boolean IsAuto {get;set;}
  17.         public SocketInfo()
  18.         {
  19.             Format = "AscII";
  20.             Protocol = "Tcp";
  21.             Port = 8890;
  22.             ServerIp = "127.0.0.1";
  23.             Data = "请录入测试数据";
  24.         }
  25.     }
 
 
 
 
  1. public class MySerializer
  2.     {      
  3.         public static void Serialize(T value, string xmlFileName)
  4.         {
  5.             if (value == null)
  6.             {
  7.                 return;
  8.             }
  9.             XmlSerializer serializer = new XmlSerializer(typeof(T));
  10.             XmlWriterSettings settings = new XmlWriterSettings();
  11.             settings.Encoding = new UnicodeEncoding(false, false);
  12.             settings.Indent = false;
  13.             settings.OmitXmlDeclaration = false;
  14.             FileStream fs = new FileStream(xmlFileName, FileMode
  15.                 .OpenOrCreate);
  16.             serializer.Serialize(fs, value);
  17.             fs.Close();
  18.         }
  19.         public static T Deserialize(string xmlFileName)
  20.         {
  21.             if (string.IsNullOrEmpty(xmlFileName))
  22.             {
  23.                 return default(T);
  24.             }
  25.             XmlSerializer serializer = new XmlSerializer(typeof(T));
  26.             //XmlSerializer serializer = new XmlSerializer(typeof(ArrayList));
  27.             XmlReaderSettings settings = new XmlReaderSettings();
  28.             //settings.
  29.             FileStream fs = null;
  30.             try
  31.             {
  32.                 fs = new FileStream(xmlFileName, FileMode.Open);
  33.                 // Deserialize the content of the XML file to a Contact array 
  34.                 // utilizing XMLReader
  35.                 XmlReader reader = new XmlTextReader(fs);
  36.                 T contacts = (T)serializer.Deserialize(reader);
  37.                 return contacts;
  38.             }
  39.             catch (FileNotFoundException)
  40.             {
  41.                 // Do nothing if the file does not exists
  42.             }
  43.             finally
  44.             {
  45.                 if (fs != null) fs.Close();
  46.             }
  47.             return default(T);
  48.         }
  49.     }

客户端的报文和服务器端的报文数据存放在Client.log和Server.log两个文件当中.主要是借助了Log4net的配置实现的.

 
 
 
 
  1.         
  2.             
  3.             
  4.         
  5.         
  6.             
  7.             
  8.             
  9.             
  10.             
  11.             
  12.             
  13.             
  14.                 
  15.             
  16.         
  17.         
  18.             
  19.             
  20.         
  21.         
  22.             
  23.             
  24.             
  25.             
  26.             
  27.             
  28.             
  29.             
  30.                 
  31.             
  32.         
  33.         
  34.             
  35.             
  36.         
  37.        
  38.     

当前文章:C#Socket报文和端口测试工具的开发(提供源码)
分享路径:http://www.gawzjz.com/qtweb/news15/197815.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联