因为自己经常做Socket开发,经常要调试和维护多个服务器端和客户端的通信、报文数据等,网上的工具都是功能简单,用的不爽,所以一直都想自己写一个。
创新互联2013年至今,是专业互联网技术服务公司,拥有项目做网站、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元荔波做网站,已为上家服务,为荔波各地企业和个人服务,联系电话:13518219792
Socket测试工具 Socket测试工具源码
年底不忙了,终于写了一个,提供给大家使用,源码可以随便使用和修改,欢迎多提意见,让这个工具更易用,方便Socket编程开发人鱼。主要的功能如下:
1.建立Socket测试服务器端和测试客户端,并向其他端发送或接受报文数据,支持自动发送和自动应答,支持UDP和TCP;
2.录入的IP地址和端口等参数数据进行本地XML序列化,下次自动打开。(这个是我需要的,不用每次都录入各种IP地址端口了);
3.接受或发送的报文数据,可以直接保存在日志文件当中,便于离线分析。
4.服务器端,可以查看接入的各个连接信息;
5.支持AscII和16进制的数据发送和接收显示。
由于界面要同时支持TCP和UDP的数据通信,所以编写了两个接口IServer和IClient,便于界面和通信层分开。
- public interface IServer
- {
- //初始化
- void Init(string serverIp, int port);
- //从服务器端给某个连接发送数据
- void Send(string connId, byte[] data, int length);
- //监听
- int Listen();
- //得到当前的连接
- List
GetConnectionList(); - //Socket事件
- event ReceivedHandler OnDataReceived;
- event SocketErrorHandler OnSocketError;
- void Close();
- }
为了保存参数数据,所以构造了一个SocketInfo类,对应客户端和服务器端,然后将这个集合序列化到XML文件中。
序列化的代码如下:
- [Serializable]
- public class SocketInfo
- {
- public string Name { get; set; }
- //Server端或客户端类型
- public string Type { get; set; }
- //16进制格式或AscII
- public string Format { get; set; }
- public string ServerIp { get; set; }
- public int Port { get; set; }
- //TCP或UDP
- public string Protocol { get; set; }
- //报文数据
- public string Data {get;set;}
- //是否自动发送或接收数据
- public Boolean IsAuto {get;set;}
- public SocketInfo()
- {
- Format = "AscII";
- Protocol = "Tcp";
- Port = 8890;
- ServerIp = "127.0.0.1";
- Data = "请录入测试数据";
- }
- }
- public class MySerializer
- {
- public static void Serialize
(T value, string xmlFileName) - {
- if (value == null)
- {
- return;
- }
- XmlSerializer serializer = new XmlSerializer(typeof(T));
- XmlWriterSettings settings = new XmlWriterSettings();
- settings.Encoding = new UnicodeEncoding(false, false);
- settings.Indent = false;
- settings.OmitXmlDeclaration = false;
- FileStream fs = new FileStream(xmlFileName, FileMode
- .OpenOrCreate);
- serializer.Serialize(fs, value);
- fs.Close();
- }
- public static T Deserialize
(string xmlFileName) - {
- if (string.IsNullOrEmpty(xmlFileName))
- {
- return default(T);
- }
- XmlSerializer serializer = new XmlSerializer(typeof(T));
- //XmlSerializer serializer = new XmlSerializer(typeof(ArrayList));
- XmlReaderSettings settings = new XmlReaderSettings();
- //settings.
- FileStream fs = null;
- try
- {
- fs = new FileStream(xmlFileName, FileMode.Open);
- // Deserialize the content of the XML file to a Contact array
- // utilizing XMLReader
- XmlReader reader = new XmlTextReader(fs);
- T contacts = (T)serializer.Deserialize(reader);
- return contacts;
- }
- catch (FileNotFoundException)
- {
- // Do nothing if the file does not exists
- }
- finally
- {
- if (fs != null) fs.Close();
- }
- return default(T);
- }
- }
客户端的报文和服务器端的报文数据存放在Client.log和Server.log两个文件当中.主要是借助了Log4net的配置实现的.
当前文章:C#Socket报文和端口测试工具的开发(提供源码)
分享路径:http://www.gawzjz.com/qtweb/news15/197815.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联