QT TCP 서비스 측 클라이언트 연결 해제 판단
2. 감청 코드는 주로 감청 임무를 본 컴퓨터에 연결하고 포트 번호가 10086인 클라이언트를 실현하며 연결 신호와 슬롯 함수 관계를 구축한다
void MainWindow::start_monitor()
{
connect(&m_tcpServer,SIGNAL(newConnection()),this,SLOT(acceptConnection()));
if(!m_tcpServer.listen(QHostAddress::Any,10086)){
qDebug()<<m_tcpServer.errorString();
close();
return;
}
ui->textEdit->setText(" ");
}
3. 새로운 연결, 연결이 있을 때 연결된 대상을 기록하고 데이터와 오류를 받은 슬롯 함수를 구축한다
void MainWindow::acceptConnection()
{
m_tcpServerConnection=m_tcpServer.nextPendingConnection();
connect(m_tcpServerConnection,SIGNAL(readyRead()),this,SLOT(updateServerRead()));
connect(m_tcpServerConnection, SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(MSGError(QAbstractSocket::SocketError)));
ui->textEdit->setText(" ");
}
4. 연결 해제 처리
void MainWindow::MSGError(QAbstractSocket::SocketError)
{
int error = m_tcpServerConnection->error();
switch(error)
{
case QAbstractSocket::RemoteHostClosedError://
{
QString hostAddress=m_tcpServerConnection->QAbstractSocket::peerAddress().toString();
ui->textEdit->setPlainText(tr(" [%1] \r
").arg(hostAddress));
break;
}
default:
{
error = -1;
QMessageBox::information(this, "show", m_tcpServerConnection->errorString());
break;
}
}
}
5. 클라이언트가 종료됨
void MainWindow::btn_break_connect()
{
m_tcpClient->disconnectFromHost();
ui->plainTextEdit->appendPlainText(" ");
}
6. 관련 헤더 파일 부분
private:
Ui::MainWindow *ui;
QTcpServer m_tcpServer;
QTcpSocket *m_tcpServerConnection;
public slots:
void start_monitor();
void acceptConnection();
void updateServerRead();
void MSGError(QAbstractSocket::SocketError);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Qt How to use connect between incompatible signal and slotIn this I want to call a function, that function will receive a point . But this function should be invoked by a timer's...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.