可以在构造函数中设置socket的选项来避免端口重用。具体方法如下:
在构造函数中创建一个新的QTcpSocket对象。
调用setsockopt()函数来设置SO_REUSEADDR选项,这样可以使得在连接关闭后,可以立即重用该端口。
调用bind()函数将socket绑定到指定的端口。
例如,在以下代码中,我们使用构造函数参数传递一个Qtcpsocket,并且在构造函数中设置了SO_REUSEADDR选项来避免端口重用。
MyClass::MyClass(QTcpSocket *socket, QObject *parent) : QObject(parent)
{
// Create a new QTcpSocket object
m_socket = new QTcpSocket(this);
// Set SO_REUSEADDR option to avoid port reuse
int enable = 1;
setsockopt(m_socket->socketDescriptor(), SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(enable));
// Bind the socket to the specified port
m_socket->bind(socket->localAddress(), socket->localPort());
// Connect signals and slots for data transfer
connect(socket, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
connect(socket, SIGNAL(disconnected()), this, SLOT(onDisconnected()));
}