QT開發之旅二TCP除錯工具

2021-06-19 17:16:42 字數 2539 閱讀 6528

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即可!但...