私はUeTcpServer
という名前のQTcpServer
サブクラスであるいくつかのサーバーアプリケーションで作業しています。サーバーアプリケーションは正常に起動し、私はQTcpServer :: hadPendingConnections()は、新しい接続時にfalseを返します
connect(this->ueTcpServer(),
SIGNAL(newConnection()),
this,
SLOT(ueSlotTcpServerNewConnection()));
介しUeTcpServer
のnewConnectionSignal
に接続した後Linux terminal
を使用して、サーバアプリケーションに接続されているueSlotTcpServerNewConnection()
にブレークポイントを配置すると、ブレークポイントは、ueSlotTcpServerNewConnection()
スロット内部活性化:
void UeMainWindow::ueSlotTcpServerNewConnection()
{
if(this->ueTcpServer()->hasPendingConnections())
{
QTcpSocket* incomingSocket=this->ueTcpServer()->nextPendingConnection();
this->ueSlotAddEventInfoLog(0,
tr("New incoming connection from host")
.append(" ")
//.append(this->ueTcpServer()->nextPendingConnection()->peerAddress().toString())
.append(incomingSocket->peerName())
.append(" ")
.append(tr("with IP address"))
.append(" ")
.append(incomingSocket->peerAddress().toString())
.append(" ")
.append(tr("using port"))
.append(" ")
//.append(this->ueTcpServer()->nextPendingConnection()->peerPort()));
.append(QString::number(incomingSocket->peerPort())));
} // if
} // ueSlotTcpServerNewConnection
ただし、this->ueTcpServer()->hasPendingConnection()
はfalse
を返します。どうして?
「QTcpSocket * conn = server-> nextPendingConnection()){」を使用する傾向があり、問題は一度もありませんでした。だから私の質問は... 'hasPendingConnections'がfalseを返すとき' nextPendingConnection'はNULL/nullptrを返しますか?それとも実際に有効な接続を返しますか? –
@ G.M。 'if(this-> ueTcpServer() - > hasPendingConnections())'を削除/コメントすると、 'QTcpSocket'への' NULL'ポインタを取得します。 – KernelPanic
アプリケーションのQTcpServerのサブクラスでincomingConnectionを再実装しましたか?もしそうなら、おそらくあなたはaddPendingConnectionを呼び出すことを忘れています。 –