使用Qt我正在尝试连接到本地udp套接字。 我面临的是一个小问题,但我希望它能够适当地解决它未来的项目。 核心软件分为一个主线程,即初始化连接和一个辅助线程,它在第三方进程(另一个应用程序)启动时发出信号,让主线程尝试连接到该进程托管服务器。
void MainWindow::initSocket(){
udpSocket = new QUdpSocket(this);
connect(udpSocket, SIGNAL(readyRead()), this, SLOT(readPendingDatagrams()));
handshaker s1;
s1.a= 1;
s1.b= 1;
udpSocket->writeDatagram((const char*)&s1, sizeof(s1), QHostAddress::LocalHost, PORT);
QThread::sleep(1);
s1.c= 1;
udpSocket->writeDatagram((const char*)&s1, sizeof(s1), QHostAddress::LocalHost, PORT);
}
基本上发生的是,有时信号发射得太快,握手执行得太快(数据包因为另一端没有服务器而丢失),因此连接未正确建立。 我知道UDP是无连接的,但有一种可靠的方法来了解接收器是否打开(例如ping)?
如果我键入netstat -an |在cmd中找到“UDP”,我可以在服务器可用时查看。