Qt基于TCP實現客戶端與服務端的連接_第1頁
Qt基于TCP實現客戶端與服務端的連接_第2頁
Qt基于TCP實現客戶端與服務端的連接_第3頁
Qt基于TCP實現客戶端與服務端的連接_第4頁
Qt基于TCP實現客戶端與服務端的連接_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論