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

創(chuàng)新互聯(lián)2013年至今,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元荔波做網(wǎng)站,已為上家服務,為荔波各地企業(yè)和個人服務,聯(lián)系電話:13518219792
Socket測試工具 Socket測試工具源碼
年底不忙了,終于寫了一個,提供給大家使用,源碼可以隨便使用和修改,歡迎多提意見,讓這個工具更易用,方便Socket編程開發(fā)人魚。主要的功能如下:
1.建立Socket測試服務器端和測試客戶端,并向其他端發(fā)送或接受報文數(shù)據(jù),支持自動發(fā)送和自動應答,支持UDP和TCP;
2.錄入的IP地址和端口等參數(shù)數(shù)據(jù)進行本地XML序列化,下次自動打開。(這個是我需要的,不用每次都錄入各種IP地址端口了);
3.接受或發(fā)送的報文數(shù)據(jù),可以直接保存在日志文件當中,便于離線分析。
4.服務器端,可以查看接入的各個連接信息;
5.支持AscII和16進制的數(shù)據(jù)發(fā)送和接收顯示。
由于界面要同時支持TCP和UDP的數(shù)據(jù)通信,所以編寫了兩個接口IServer和IClient,便于界面和通信層分開。
- public interface IServer
- {
- //初始化
- void Init(string serverIp, int port);
- //從服務器端給某個連接發(fā)送數(shù)據(jù)
- void Send(string connId, byte[] data, int length);
- //監(jiān)聽
- int Listen();
- //得到當前的連接
- List
GetConnectionList(); - //Socket事件
- event ReceivedHandler OnDataReceived;
- event SocketErrorHandler OnSocketError;
- void Close();
- }
為了保存參數(shù)數(shù)據(jù),所以構造了一個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; }
- //報文數(shù)據(jù)
- public string Data {get;set;}
- //是否自動發(fā)送或接收數(shù)據(jù)
- public Boolean IsAuto {get;set;}
- public SocketInfo()
- {
- Format = "AscII";
- Protocol = "Tcp";
- Port = 8890;
- ServerIp = "127.0.0.1";
- Data = "請錄入測試數(shù)據(jù)";
- }
- }
- 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);
- }
- }
客戶端的報文和服務器端的報文數(shù)據(jù)存放在Client.log和Server.log兩個文件當中.主要是借助了Log4net的配置實現(xiàn)的.
分享文章:C#Socket報文和端口測試工具的開發(fā)(提供源碼)
網(wǎng)址分享:http://www.5511xx.com/article/cdddcdd.html


咨詢
建站咨詢
