И так, доброго вечера тем кто решил прочитать, и помочь =)
Проблема вот в чем, есть TCP/IP сервер, который отлично работает по Ethernet, и при этом отказывается принимать сообщения по 3G модему.
Код сервера
C++ (Qt)
void Cod::Start(int nPort)
{
m_nNextBlockSize =0;
m_ptcpServer = new QTcpServer(this);
if (!m_ptcpServer->listen(QHostAddress::Any, nPort)) {
m_ptcpServer->close();
return;
}
connect(m_ptcpServer, SIGNAL(newConnection()),
this, SLOT(slotNewConnection())
);
}
C++ (Qt)
void Cod::slotNewConnection()
{
qDebug()<<"Slot new connection";
QTcpSocket* pClientSocket = m_ptcpServer->nextPendingConnection();
connect(pClientSocket, SIGNAL(disconnected()),
pClientSocket, SLOT(deleteLater())
);
connect(pClientSocket, SIGNAL(readyRead()),
this, SLOT(slotReadClient())
);
}
C++ (Qt)
void Cod::slotReadClient()
{
QTcpSocket* pClientSocket = (QTcpSocket*)sender();
QDataStream in(pClientSocket);
in.setVersion(QDataStream::Qt_4_7);
for (;;) {
if (!m_nNextBlockSize) {
if (pClientSocket->bytesAvailable() < sizeof(quint16)) {
break;
}
in >> m_nNextBlockSize;
}
if (pClientSocket->bytesAvailable() < m_nNextBlockSize) {
pClientSocket->waitForReadyRead(5000);
break;
}
QString str;
QByteArray arr;
in >> arr;
str = QString(arr);
m_nNextBlockSize = 0;//размер входного буфера
process(str, pClientSocket);
}
}
при этом bytesAvailable вроде бы как правильное, а сообщение выглядит так: " ".
я понимаю что 3G медленный, но почему вообще ничего не приходит не знаю(