




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第Qt基于TCP實現客戶端與服務端的連接//發送與服務器連接信號
connect(connectBtn,SIGNAL(clicked()),this,SLOT(onConnectButtonClicked()));
//連接成功后接收到connected信號
connect(tcpSocket,SIGNAL(connected()),this,SLOT(onTextEditRead()));
//給服務器發送內容
connect(ButtonSend,SIGNAL(clicked()),this,SLOT(onButtonSendClicked()));
//接收來自服務器的內容,信號readReady
connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(onRecesiveDataFromServer()));
connect(ButtonDisconnect,SIGNAL(clicked()),this,SLOT(onDisConnect()));
ClientWidget::~ClientWidget()
voidClientWidget::onConnectButtonClicked()
//獲取服務器IP和端口
QStringipStr=LineEditIPName-text();
qint16portName=LineEditPortName-text().toInt();
QHostAddressip=QHostAddress(ipStr);
//主動和服務器建立連接
tcpSocket-connectToHost(ip,portName);
voidClientWidget::onTextEditRead()
TextEditRead-setText(QString::fromLocal8Bit("成功和服務器建立好連接?。?!"));
connectBtn-setEnabled(false);
ButtonDisconnect-setEnabled(true);
voidClientWidget::onButtonSendClicked()
if(tcpSocket==NULL)
{
return;
}
//獲取編輯框內容
QStringstr=TextEditWrite-toPlainText();
//發送文本內容
tcpSocket-write(str.toUtf8().data());
TextEditWrite-clear();
voidClientWidget::onRecesiveDataFromServer()
QByteArrayarrayAll=tcpSocket-readAll();
QTextCodec*tc=QTextCodec::codecForName("UTF-8");
QStringstr=tc-toUnicode(arrayAll);
//追加到讀取編輯區中
TextEditRead-append(str);
voidClientWidget::onDisConnect()
if(tcpSocket==NULL)
{
return;
}
tcpSocket-disconnectFromHost();
tcpSocket-close();
connectBtn-setEnabled(true);
ButtonDisconnect-setEnabled(false);
TextEditRead-setText(QString::fromLocal8Bit("連接已斷開?。?!"));
}
(1)、ServerWidget.h文件
#ifndefSERVERWIDGET_H
#defineSERVERWIDGET_H
#includeQtGui/QWidget
#include"ui_ServerWidget.h"
#includeQTcpServer
#includeQTcpSocket
#includeQString
#includeQTextCodec
classServerWidget:publicQWidget
Q_OBJECT
public:
ServerWidget(QWidget*parent=0,Qt::WFlagsflags=0);
~ServerWidget();
QTcpServer*tcpServer;
QTcpSocket*tcpSocket;
privateslots:
voidOnConnectTcpServer();
voidOnSendButtonClicked();
voidOnCloseButtonClicked();
voidOnSeResiveData();
voidOnDisconnected();
private:
Ui::ServerWidgetClassui;
#endif//SERVERWIDGET_H
(2)、ServerWidget.cpp文件
#include"stdafx.h"
#include"ServerWidget.h"
ServerWidget::ServerWidget(QWidget*parent,Qt::WFlagsflags)
:QWidget(parent,flags)
ui.setupUi(this);
tcpServer=NULL;
tcpSocket=NULL;
setWindowTitle(QString::fromWCharArray(L"服務器(端口:8888)"));
//箭筒套接字,指定父對象,讓其自動回收空間
tcpServer=newQTcpServer(this);
//監聽并綁定端口
tcpServer-listen(QHostAddress::Any,8888);
connect(tcpServer,SIGNAL(newConnection()),this,SLOT(OnConnectTcpServer()));
connect(ui.sendButton,SIGNAL(clicked()),this,SLOT(OnSendButtonClicked()));
connect(ui.closeButton,SIGNAL(clicked()),this,SLOT(OnCloseButtonClicked()));
connect(tcpServer,SIGNAL(disconnected()),this,SLOT(OnDisconnected()));
ServerWidget::~ServerWidget()
#includeQDebug
voidServerWidget::OnConnectTcpServer()
//取出建立好的套接字
tcpSocket=tcpServer-nextPendingConnection();
//獲取對方的IP和端口號
QStringipStr=tcpSocket-peerAddress().toString();
qint16portName=tcpSocket-peerPort();
QStringconnectStr=QString::fromLocal8Bit("成功連接");
QStringtemp
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 在線教育平臺用戶體驗優化與滿意度調查報告:2025年教育市場分析
- 2025年AI輔助醫療診斷產品注冊審批流程與技術創新動態報告
- 2025年醫保支付改革對醫療行業藥品價格的影響及應對策略報告
- 軟件適用性驗證記錄
- 2025-2030中國耐火陶瓷纖維紐繩行業應用狀況與投資盈利預測報告
- 團隊創新環境營造方法考核試卷
- 易燃氣體火災滅火系統配置考核試卷
- 紡織智能制造系統集成與優化考核試卷
- 智慧能源與智慧交通系統整合研究考核試卷
- 光伏組件防火材料生物降解性研究考核試卷
- 胃管護理操作規范與管理要點
- JG/T 446-2014建筑用蓄光型發光涂料
- 人文關懷在護理工作中的意義
- (三級)人工智能訓練師職業技能鑒定理論考試題(附答案)
- 2025杭州市臨安區事業單位招聘80人考前自測高頻考點模擬試題附答案詳解(鞏固)
- 2025年北京二十中中考英語零模試卷
- 護理服務質量提升路徑與實踐
- 國有資產管理清查報告編寫指南
- 糞肥還田協議書范本
- 商務數據分析-形考作業4(第5章)-國開(ZJ)-參考資料
- 有機合成與推斷綜合大題(解析版)
評論
0/150
提交評論