Название: Нубский вопрос по QTcpSocket[решено] Отправлено: BuRn от Ноябрь 13, 2014, 23:43 Здравствуйте. Возникла проблема с сокетами, а именно проблема при их уничтожении. Вопрос в следующем, следует ли вызывать на прямую delete socket,
Код: QTcpSocket *_sock = new QTcpSocket(this); Название: Re: Нубский вопрос по QTcpSocket Отправлено: torwig от Ноябрь 14, 2014, 00:20 Он удалится при дисконнекте, поэтому явно писать delete не надо, можешь просто disconnectFromHost() вызвать, если он тебе не нужен или он сам удалится, когда произойдет дисконнект.
Название: Re: Нубский вопрос по QTcpSocket Отправлено: BuRn от Ноябрь 14, 2014, 00:21 Он удалится при дисконнекте, поэтому явно писать delete не надо, можешь просто disconnectFromHost() вызвать, если он тебе не нужен или он сам удалится, когда произойдет дисконнект. Я ему после получения ответа и чтения данных делаю close() , этого достаточно получается ? Название: Re: Нубский вопрос по QTcpSocket Отправлено: torwig от Ноябрь 14, 2014, 00:26 To close the socket, call disconnectFromHost(). QAbstractSocket enters QAbstractSocket::ClosingState. After all pending data has been written to the socket, QAbstractSocket actually closes the socket, enters QAbstractSocket::ClosedState, and emits disconnected().
По сути close() нечто подобное сделает, но я всегда вызывал именно disconnectFromHost(). void QAbstractSocket::close () [virtual] Reimplemented from QIODevice::close(). Closes the I/O device for the socket, disconnects the socket's connection with the host, closes the socket, and resets the name, address, port number and underlying socket descriptor. Название: Re: Нубский вопрос по QTcpSocket Отправлено: BuRn от Ноябрь 14, 2014, 00:37 To close the socket, call disconnectFromHost(). QAbstractSocket enters QAbstractSocket::ClosingState. After all pending data has been written to the socket, QAbstractSocket actually closes the socket, enters QAbstractSocket::ClosedState, and emits disconnected(). Спасибо!По сути close() нечто подобное сделает, но я всегда вызывал именно disconnectFromHost(). void QAbstractSocket::close () [virtual] Reimplemented from QIODevice::close(). Closes the I/O device for the socket, disconnects the socket's connection with the host, closes the socket, and resets the name, address, port number and underlying socket descriptor. |