trionetcom.cpp:260:26: error: no member named 'peerPort' in 'QTcpServer'
时间: 2023-07-30 21:05:36 浏览: 42
这个错误提示是由于在 trionetcom.cpp 文件的第 260 行中使用了 QTcpServer 的 peerPort 成员,但是 QTcpServer 并没有定义 peerPort 成员。
可能是因为你在代码中使用了过时的或者不正确的函数或者版本导致的。建议你检查一下 QTcpServer 的文档,确保你使用的是正确的函数和版本。另外,你也可以尝试使用 QTcpSocket 的 peerPort 函数来获取对等端的端口号。
相关问题
改进代码 procedure TMainForm.mCastReceiverIPMCastRead(Sender: TObject; const AData: TIdBytes; ABinding: TIdSocketHandle); begin try FileCS.Enter; Inc(FReadCount); AIdBytesQueue.Enqueue(AData); Inc(FReceiveBytes, Length(AData)); FileCS.Leave; except on E:Exception do begin LogError(e.Message, '[IPMCastRead]'); end; end; end;
这段代码看起来很简单,但是有一些可以改进的地方。首先,FileCS.Enter 和 FileCS.Leave 应该放在 try-finally 块中,以确保在任何情况下都会正确释放锁。其次,AIdBytesQueue.Enqueue 中的 AData 参数可能会被修改,因此应该使用 TIdBytes.CreateCopy(AData) 创建一个副本并将其传递给 Enqueue 方法。最后,LogError 方法应该记录 ABinding.PeerIP 和 ABinding.PeerPort 以便更好地调试。改进后的代码如下:
procedure TMainForm.mCastReceiverIPMCastRead(Sender: TObject; const AData: TIdBytes; ABinding: TIdSocketHandle);
var
DataCopy: TIdBytes;
begin
try
FileCS.Enter;
try
Inc(FReadCount);
DataCopy := TIdBytes.CreateCopy(AData);
AIdBytesQueue.Enqueue(DataCopy);
Inc(FReceiveBytes, Length(AData));
finally
FileCS.Leave;
end;
except
on E: Exception do
begin
LogError(Format('%s [IPMCastRead] from %s:%d', [E.Message, ABinding.PeerIP, ABinding.PeerPort]));
end;
end;
end;
qt QTcpSocket peerport函数
`QTcpSocket::peerPort()`函数返回与套接字连接的对等端的端口号。如果套接字没有连接,则返回0。
例如,如果你通过 `QTcpSocket` 建立与服务器的连接,可以使用 `peerPort()` 函数获取服务器的端口号。示例代码如下:
```c++
QTcpSocket socket;
socket.connectToHost("127.0.0.1", 8080);
if (socket.waitForConnected()) {
qDebug() << "Connected to server on port:" << socket.peerPort();
}
```
上述代码中,`peerPort()` 函数用于获取服务器端口号,并通过 `qDebug()` 输出。