首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

QTcpServer的小疑点

2014-01-19 
QTcpServer的小问题照着网上以为大牛的blog用tcp协议写文件传输,遇到问题如下。1,server端的newConnection

QTcpServer的小问题
照着网上以为大牛的blog用tcp协议写文件传输,遇到问题如下。
1,server端的newConnection的槽函数从未被触发。。。。。。。。,实际上QApplication对象已经建立。事件循环也在main函数开启,是在不懂为什么。
2,QtcpServer的listen(ipAddress,port)方法是只用调用一次就会一直监听,还是需要写在循环里面调用。当然这是异步的。。
3.如果用同步的方法写。waitforNewconnection()这个应该咋用呢?
分不多。。。大家帮忙解释下吧
[解决办法]
1) 我这是可以的,简单写了下,你试试
QRecv.h

#pragma once

#include <QtCore/QObject>

class QRecv :public QObject
{
Q_OBJECT
public:
QRecv();
~QRecv();
public slots:
void handle_connect();
};

QRecv.cpp

#include "QRecv.h"
#include <QtCore/QtDebug>

QRecv::QRecv()
{

}

QRecv::~QRecv()
{

}

void 
QRecv::handle_connect()
{
qDebug()<<"handle_connect()"<<endl;
}

main.cpp

#include <QtGui/QApplication>
#include <QtNetwork/QTcpServer>
#include  "QRecv.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTcpServer server;
if ( false == server.listen(QHostAddress::Any,5000))
{
return -1;
}
QRecv *recv = new QRecv;
QObject::connect(&server,SIGNAL(newConnection()),recv,SLOT(handle_connect()));
return a.exec();
}

编译运行后,netstat -an可以看到5000端口在监听。telnet 127.0.0.1 5000 访问TCP端口,可以看到事件触发

2) listen一次

3) bool QTcpServer::waitForNewConnection ( int msec = 0, bool * timedOut = 0 )
Waits for at most msec milliseconds or until an incoming connection is available. Returns true if a connection is available; otherwise returns false. If the operation timed out and timedOut is not 0, *timedOut will be set to true.

热点排行