tcp除錯工具顧名思義用來除錯tcp通訊的,網上這樣的工具n多,之前用.net寫過乙個,無奈在xp下還要安裝個.net框架才能執行,索性這次用qt重寫,發現qt寫tcp通訊比.net還要便捷一些,執行效率貌似要高,還能識別客戶端斷開,這個真神奇,除了斷電之外。
專案名稱:tcp除錯工具
開發環境:win7+qt4.7+qt creator2.8+mingw
實現功能:ascii格式和16進製制資料收發,支援多個客戶端收發訊息,可以指定客戶端傳送訊息,動態增加和移除已連線客戶端。
執行截圖:
粗略步驟:
第一步:新增主介面,布局好主介面,並命名好控制項,例如服務端的清空按鈕命名為btnclearserver,客戶端的清空按鈕命名為btnclearclient。
第二步:編寫服務端中客戶端通訊類,服務端可以接受多個客戶端的連線,這裡採用了同步通訊機制,先編寫mytcpclient類,封裝了客戶端連線斷開接收資料的操作。具體**如下:
mytcpclient.h
#ifndef mytcpclient_h
#define mytcpclient_h
#include class mytcpclient : public qtcpsocket
;#endif // mytcpclient_h
mytcpclient.cpp
#include "mytcpclient.h"
#include #include "myhelper.h"
mytcpclient::mytcpclient(qobject *parent,int clientid) :
qtcpsocket(parent)
void mytcpclient::readdata()
void mytcpclient::disconnect()
一旦客戶端斷開則傳送clientdisconnect訊號,引數包含ip位址和埠。
第三步:編寫服務端通訊類。
mytcpserver.h
#ifndef mytcpserver_h
#define mytcpserver_h
#include #include "mytcpclient.h"
class mytcpserver : public qtcpserver
void closeallclient();
private:
qlistclientlist;
qlistclientid;
mytcpclient *currentclient;
int clientcount;
protected:
void incomingconnection(int handle);
signals:
void clientreaddata(int clientid,qstring ip,int port,qbytearray data);
void clientconnect(int clientid,qstring ip,int port);
void clientdisconnect(int clientid,qstring ip,int port);
private slots:
void disconnect(int clientid,qstring ip,int port);
public slots:
};#endif // mytcpserver_h
mytcpserver.cpp
#include "mytcpserver.h"
#include mytcpserver::mytcpserver(qobject *parent) :
qtcpserver(parent)
void mytcpserver::incomingconnection(int handle)
void mytcpserver::disconnect(int clientid,qstring ip,int port)
}}//對當前連線傳送資料
void mytcpserver::senddatacurrent(qbytearray data)
currentclient->write(data);
}//對所有連線傳送資料
void mytcpserver::senddataall(qbytearray data)
}void mytcpserver::closeallclient()
}
這裡封裝了指定客戶端發訊息,對當前連線發訊息,對所有客戶端發訊息三種傳送訊息方法。
最開始的時候發現直接close停止監聽,發現依然可以接收客戶端的訊息,原因是還沒有關閉客戶端連線,所以增加了closeallclient()方法,用來關閉所有客戶端連線,這樣的話才是徹底的停止監聽。
原始碼猛點這裡:
Vue開發與除錯工具
vscode visual studio code windows版本的安裝就很簡單了,傻瓜式安裝,之後去快捷鍵 在當前行中間換行到下一行 ctrl enter 當游標點選到某一行時,預設選中全行,可以直接複製剪下 直接刪除某一行 shift delete或者ctrl shift k 多行游標選擇 ...
推薦angularJs開發,除錯,測試工具
首先是nodejs 編輯工具 sublime text 輕量級 webstorm 佔的資源多一些 斷點除錯工具 chrome外掛程式batarang 版本管理工具 github tortoisegit 合併和混淆工具 grunt以及外掛程式 grunt contrib uglify,對 進行混淆的 ...
移動web開發除錯工具AlloyLever介紹
web除錯有幾個非常頻繁的剛需 看log 看error 看ajax發包與回包。其他的如timeline和cookie以及localstorage就不是那麼頻繁,但是alloylever都支援。如你所見 可以通過npm安裝 npm install alloylever你的頁面只需要引用乙個js即可!但...