QAbstractSocket Class
QAbstractSocket 클래스는 모든 소켓 유형에 공통된 기본 기능을 제공합니다. 더 보기...
Header: | #include <QAbstractSocket> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
상속합니다: | QIODevice |
상속 대상 |
- 상속된 멤버를 포함한 모든 멤버 목록
- QAbstractSocket은 네트워크 프로그래밍 API의 일부입니다.
참고: 이 클래스의 모든 함수는 재인용됩니다.
공용 유형
enum | BindFlag { ShareAddress, DontShareAddress, ReuseAddressHint, DefaultForPlatform } |
flags | BindMode |
enum | NetworkLayerProtocol { IPv4Protocol, IPv6Protocol, AnyIPProtocol, UnknownNetworkLayerProtocol } |
enum | PauseMode { PauseNever, PauseOnSslErrors } |
flags | PauseModes |
enum | SocketError { ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, SocketAccessError, SocketResourceError, …, UnknownSocketError } |
enum | SocketOption { LowDelayOption, KeepAliveOption, MulticastTtlOption, MulticastLoopbackOption, TypeOfServiceOption, …, PathMtuSocketOption } |
enum | SocketState { UnconnectedState, HostLookupState, ConnectingState, ConnectedState, BoundState, …, ListeningState } |
enum | SocketType { TcpSocket, UdpSocket, SctpSocket, UnknownSocketType } |
공용 함수
QAbstractSocket(QAbstractSocket::SocketType socketType, QObject *parent) | |
virtual | ~QAbstractSocket() |
void | abort() |
virtual bool | bind(const QHostAddress &address, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform) |
bool | bind(quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform) |
(since 6.2) bool | bind(QHostAddress::SpecialAddress addr, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform) |
virtual void | connectToHost(const QString &hostName, quint16 port, QIODeviceBase::OpenMode openMode = ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = AnyIPProtocol) |
void | connectToHost(const QHostAddress &address, quint16 port, QIODeviceBase::OpenMode openMode = ReadWrite) |
virtual void | disconnectFromHost() |
QAbstractSocket::SocketError | error() const |
bool | flush() |
bool | isValid() const |
QHostAddress | localAddress() const |
quint16 | localPort() const |
QAbstractSocket::PauseModes | pauseMode() const |
QHostAddress | peerAddress() const |
QString | peerName() const |
quint16 | peerPort() const |
QString | protocolTag() const |
QNetworkProxy | proxy() const |
qint64 | readBufferSize() const |
virtual void | resume() |
void | setPauseMode(QAbstractSocket::PauseModes pauseMode) |
void | setProtocolTag(const QString &tag) |
void | setProxy(const QNetworkProxy &networkProxy) |
virtual void | setReadBufferSize(qint64 size) |
virtual bool | setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite) |
virtual void | setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value) |
virtual qintptr | socketDescriptor() const |
virtual QVariant | socketOption(QAbstractSocket::SocketOption option) |
QAbstractSocket::SocketType | socketType() const |
QAbstractSocket::SocketState | state() const |
virtual bool | waitForConnected(int msecs = 30000) |
virtual bool | waitForDisconnected(int msecs = 30000) |
재구현된 공용 함수
virtual qint64 | bytesAvailable() const override |
virtual qint64 | bytesToWrite() const override |
virtual void | close() override |
virtual bool | isSequential() const override |
virtual bool | waitForBytesWritten(int msecs = 30000) override |
virtual bool | waitForReadyRead(int msecs = 30000) override |
Signals
void | connected() |
void | disconnected() |
void | errorOccurred(QAbstractSocket::SocketError socketError) |
void | hostFound() |
void | proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator) |
void | stateChanged(QAbstractSocket::SocketState socketState) |
보호된 함수
void | setLocalAddress(const QHostAddress &address) |
void | setLocalPort(quint16 port) |
void | setPeerAddress(const QHostAddress &address) |
void | setPeerName(const QString &name) |
void | setPeerPort(quint16 port) |
void | setSocketError(QAbstractSocket::SocketError socketError) |
void | setSocketState(QAbstractSocket::SocketState state) |
재구현된 보호 함수
virtual qint64 | readData(char *data, qint64 maxSize) override |
virtual qint64 | readLineData(char *data, qint64 maxlen) override |
virtual qint64 | skipData(qint64 maxSize) override |
virtual qint64 | writeData(const char *data, qint64 size) override |
상세 설명
QAbstractSocket은 QTcpSocket 및 QUdpSocket 의 베이스 클래스이며 이 두 클래스의 모든 공통 기능을 포함합니다. 소켓이 필요한 경우 두 가지 옵션이 있습니다:
- QTcpSocket 또는 QUdpSocket 을 인스턴스화합니다.
- 네이티브 소켓 기술자를 생성하고, QAbstractSocket을 인스턴스화한 다음 setSocketDescriptor()를 호출하여 네이티브 소켓을 래핑합니다.
TCP(전송 제어 프로토콜)는 안정적이고 스트림 지향적이며 연결 지향적인 전송 프로토콜입니다. UDP(사용자 데이터그램 프로토콜)는 불안정하고 데이터그램 지향적이며 연결이 없는 프로토콜입니다. 실제로는 데이터의 지속적인 전송에는 TCP가 더 적합하지만, 안정성이 중요하지 않은 경우에는 더 가벼운 UDP를 사용할 수 있습니다.
QAbstractSocket의 API는 두 프로토콜 간의 차이점을 대부분 통합합니다. 예를 들어, UDP는 연결이 없지만 connectToHost()는 UDP 소켓에 대한 가상 연결을 설정하므로 기본 프로토콜에 관계없이 거의 동일한 방식으로 QAbstractSocket을 사용할 수 있습니다. 내부적으로 QAbstractSocket은 connectToHost()에 전달된 주소와 포트를 기억하고 read() 및 write()와 같은 함수는 이 값을 사용합니다.
언제든지 QAbstractSocket은 상태( state()에서 반환)를 갖습니다. 초기 상태는 UnconnectedState 입니다. connectToHost () 호출 후 소켓은 먼저 HostLookupState 으로 들어갑니다. 호스트가 발견되면 QAbstractSocket은 ConnectingState 으로 들어가고 hostFound() 신호를 내보냅니다. 연결이 설정되면 ConnectedState 으로 들어가 connected() 신호를 내보냅니다. 어떤 단계에서든 오류가 발생하면 errorOccurred()가 전송됩니다. 상태가 변경될 때마다 stateChanged()가 전송됩니다. 편의를 위해 isValid()는 소켓이 읽기 및 쓰기 준비가 되면 true
을 반환하지만, 읽기 및 쓰기가 가능하려면 소켓의 상태가 ConnectedState 여야 한다는 점에 유의하세요.
read() 또는 write()을 호출하여 데이터를 읽거나 쓰거나, 편의 함수 readLine() 및 readAll()을 사용합니다. QAbstractSocket은 또한 단일 바이트에서 작동하는 QIODevice 에서 getChar(), putChar() 및 ungetChar()를 상속받습니다. bytesWritten () 신호는 데이터가 소켓에 쓰여질 때 방출됩니다. Qt는 쓰기 버퍼 크기를 제한하지 않습니다. 이 신호를 수신하여 크기를 모니터링할 수 있습니다.
readyRead() 신호는 새로운 데이터 청크가 도착할 때마다 발생합니다. bytesAvailable() 신호는 읽기에 사용할 수 있는 바이트 수를 반환합니다. 일반적으로 readyRead() 신호를 슬롯에 연결하고 거기서 사용 가능한 모든 데이터를 읽습니다. 모든 데이터를 한 번에 읽지 않더라도 남은 데이터는 나중에 계속 사용할 수 있으며, 새로 들어오는 데이터는 QAbstractSocket의 내부 읽기 버퍼에 추가됩니다. 읽기 버퍼의 크기를 제한하려면 setReadBufferSize()를 호출합니다.
소켓을 닫으려면 disconnectFromHost()를 호출합니다. QAbstractSocket이 QAbstractSocket::ClosingState 으로 들어갑니다. 대기 중인 모든 데이터가 소켓에 쓰여진 후 QAbstractSocket은 실제로 소켓을 닫고 QAbstractSocket::UnconnectedState 을 입력한 다음 disconnected()을 출력합니다. 보류 중인 모든 데이터를 버리고 즉시 연결을 중단하려면 abort()를 대신 호출하세요. 원격 호스트가 연결을 닫으면 QAbstractSocket은 errorOccurred(QAbstractSocket::RemoteHostClosedError)를 전송하며, 이 동안 소켓 상태는 여전히 ConnectedState 이며 disconnected() 신호가 전송됩니다.
연결된 피어의 포트와 주소는 peerPort() 및 peerAddress()를 호출하여 가져옵니다. peerName()는 connectToHost()에 전달된 대로 피어의 호스트 이름을 반환합니다. localPort() 및 localAddress()는 로컬 소켓의 포트와 주소를 반환합니다.
QAbstractSocket은 특정 신호가 방출될 때까지 호출 스레드를 일시 중단하는 함수 집합을 제공합니다. 이러한 함수는 차단 소켓을 구현하는 데 사용할 수 있습니다:
- waitForConnected() 함수는 연결이 설정될 때까지 차단합니다.
- waitForReadyRead() 블록은 새 데이터를 읽을 수 있을 때까지 블록합니다.
- waitForBytesWritten() 블록은 하나의 페이로드 데이터가 소켓에 기록될 때까지 블록합니다.
- waitForDisconnected() 블록은 연결이 닫힐 때까지 차단합니다.
예시를 보여드리겠습니다:
int numRead = 0, numReadTotal = 0; char buffer[50]; forever { numRead = socket.read(buffer, 50); // do whatever with array numReadTotal += numRead; if (numRead == 0 && !socket.waitForReadyRead()) break; }
waitForReadyRead()가 false
을 반환하면 연결이 닫혔거나 오류가 발생한 것입니다.
블로킹 소켓을 사용한 프로그래밍은 비 블로킹 소켓을 사용한 프로그래밍과 근본적으로 다릅니다. 블로킹 소켓은 이벤트 루프가 필요하지 않으며 일반적으로 더 간단한 코드로 이어집니다. 그러나 GUI 애플리케이션에서 블로킹 소켓은 사용자 인터페이스가 멈추는 것을 방지하기 위해 비 GUI 스레드에서만 사용해야 합니다. 두 가지 접근 방식에 대한 개요는 다행 클라이언트 및 차단 다행 클라이언트 예제를 참조하세요.
참고: 차단 기능을 신호와 함께 사용하는 것은 권장하지 않습니다. 두 가지 가능성 중 하나를 사용해야 합니다.
QAbstractSocket은 QTextStream 및 QDataStream 의 스트림 연산자(연산자<<() 및 연산자>>())와 함께 사용할 수 있습니다. 하지만 주의해야 할 한 가지 문제가 있습니다. 연산자>>()를 사용하여 데이터를 읽으려고 시도하기 전에 충분한 데이터를 사용할 수 있는지 확인해야 합니다.
QNetworkAccessManager 및 QTcpServer 을참조하세요 .
멤버 타입 문서
열거형 QAbstractSocket::BindFlag
플래그 QAbstractSocket::BindMode
이 열거형은 QAbstractSocket::bind()의 동작을 수정하기 위해 전달할 수 있는 다양한 플래그를 설명합니다.
Constant | 값 | 설명 |
---|---|---|
QAbstractSocket::ShareAddress | 0x1 | 다른 서비스가 동일한 주소와 포트에 바인딩할 수 있도록 허용합니다. 여러 프로세스가 동일한 주소와 포트를 수신하여 단일 서비스의 부하를 공유할 때 유용합니다(예: 미리 포크된 수신기가 여러 개 있는 웹 서버의 경우 응답 시간을 크게 개선할 수 있음). 그러나 모든 서비스가 리바인딩할 수 있으므로 이 옵션에는 특정 보안 고려 사항이 적용됩니다. 이 옵션을 ReuseAddressHint와 함께 사용하면 서비스에서 기존 공유 주소를 리바인딩할 수도 있습니다. Unix에서는 SO_REUSEADDR 소켓 옵션과 동일합니다. Windows에서는 이것이 기본 동작이므로 이 옵션은 무시됩니다. |
QAbstractSocket::DontShareAddress | 0x2 | 주소와 포트를 독점적으로 바인딩하여 다른 서비스가 다시 바인딩할 수 없도록 합니다. 이 옵션을 QAbstractSocket::bind()에 전달하면 성공 시 해당 주소와 포트를 수신하는 유일한 서비스가 보장됩니다. 어떤 서비스도 재사용 주소 힌트를 전달하더라도 리바인딩이 허용되지 않습니다. 이 옵션은 ShareAddress보다 더 강력한 보안을 제공하지만 특정 운영 체제에서는 관리자 권한으로 서버를 실행해야 합니다. Unix 및 macOS에서는 공유하지 않는 것이 주소 및 포트 바인딩의 기본 동작이므로 이 옵션은 무시됩니다. Windows에서는 이 옵션이 SO_EXCLUSIVEADDRUSE 소켓 옵션을 사용합니다. |
QAbstractSocket::ReuseAddressHint | 0x4 | 주소와 포트가 이미 다른 소켓에 바인딩되어 있는 경우에도 서비스를 다시 바인딩해야 한다는 힌트를 QAbstractSocket 에 제공합니다. Windows 및 Unix에서는 SO_REUSEADDR 소켓 옵션과 동일합니다. |
QAbstractSocket::DefaultForPlatform | 0x0 | 현재 플랫폼의 기본 옵션입니다. Unix 및 macOS에서는 (DontShareAddress + ReuseAddressHint)에 해당하며, Windows에서는 ShareAddress에 해당합니다. |
BindMode 유형은 QFlags<BindFlag>에 대한 typedef입니다. BindFlag 값의 OR 조합을 저장합니다.
enum QAbstractSocket::NetworkLayerProtocol
이 열거형은 Qt에서 사용되는 네트워크 계층 프로토콜 값을 설명합니다.
Constant | 값 | 설명 |
---|---|---|
QAbstractSocket::IPv4Protocol | 0 | IPv4 |
QAbstractSocket::IPv6Protocol | 1 | IPv6 |
QAbstractSocket::AnyIPProtocol | 2 | IPv4 또는 IPv6 |
QAbstractSocket::UnknownNetworkLayerProtocol | -1 | IPv4 및 IPv6 이외 |
QHostAddress::protocol()도 참조하세요 .
열거형 QAbstractSocket::PauseMode
플래그 QAbstractSocket::PauseModes
이 열거형은 소켓이 계속 데이터 전송을 보류해야 하는 경우의 동작을 설명합니다. 현재 지원되는 유일한 알림은 QSslSocket::sslErrors()입니다.
상수 | 값 | 설명 |
---|---|---|
QAbstractSocket::PauseNever | 0x0 | 소켓에서 데이터 전송을 일시 중지하지 않습니다. 기본값이며 Qt 4의 동작과 일치합니다. |
QAbstractSocket::PauseOnSslErrors | 0x1 | SSL 오류 알림을 받으면 소켓에서 데이터 전송을 일시 중지합니다. 예: QSslSocket::sslErrors(). |
PauseModes 유형은 QFlags<PauseMode>에 대한 typedef입니다. PauseMode 값의 OR 조합을 저장합니다.
enum QAbstractSocket::SocketError
이 열거형은 발생할 수 있는 소켓 오류를 설명합니다.
Constant | 값 | 설명 |
---|---|---|
QAbstractSocket::ConnectionRefusedError | 0 | 피어에 의해 연결이 거부되었거나 시간이 초과되었습니다. |
QAbstractSocket::RemoteHostClosedError | 1 | 원격 호스트가 연결을 닫았습니다. 클라이언트 소켓(즉, 이 소켓)은 원격 닫기 알림이 전송된 후에 닫힙니다. |
QAbstractSocket::HostNotFoundError | 2 | 호스트 주소를 찾을 수 없습니다. |
QAbstractSocket::SocketAccessError | 3 | 애플리케이션에 필요한 권한이 부족하여 소켓 작업이 실패했습니다. |
QAbstractSocket::SocketResourceError | 4 | 로컬 시스템에 리소스가 부족합니다(예: 소켓이 너무 많음). |
QAbstractSocket::SocketTimeoutError | 5 | 소켓 작업이 시간 초과되었습니다. |
QAbstractSocket::DatagramTooLargeError | 6 | 데이터그램이 운영 체제의 제한(8192바이트까지 가능)보다 큽니다. |
QAbstractSocket::NetworkError | 7 | 네트워크에 오류가 발생했습니다(예: 네트워크 케이블이 실수로 뽑혔습니다). |
QAbstractSocket::AddressInUseError | 8 | QAbstractSocket::bind()에 지정한 주소가 이미 사용 중이며 전용으로 설정되었습니다. |
QAbstractSocket::SocketAddressNotAvailableError | 9 | QAbstractSocket::bind()에 지정된 주소가 호스트에 속하지 않습니다. |
QAbstractSocket::UnsupportedSocketOperationError | 10 | 요청된 소켓 작업이 로컬 운영 체제에서 지원되지 않습니다(예: IPv6 지원 부족). |
QAbstractSocket::ProxyAuthenticationRequiredError | 12 | 소켓이 프록시를 사용 중이며 프록시에는 인증이 필요합니다. |
QAbstractSocket::SslHandshakeFailedError | 13 | SSL/TLS 핸드셰이크가 실패하여 연결이 닫혔습니다( QSslSocket 에서만 사용됨). |
QAbstractSocket::UnfinishedSocketOperationError | 11 | 마지막으로 시도한 작업이 아직 완료되지 않았습니다(아직 백그라운드에서 진행 중). |
QAbstractSocket::ProxyConnectionRefusedError | 14 | 해당 서버에 대한 연결이 거부되었기 때문에 프록시 서버에 연결할 수 없습니다. |
QAbstractSocket::ProxyConnectionClosedError | 15 | 프록시 서버에 대한 연결이 예기치 않게 종료되었습니다(최종 피어에 대한 연결이 설정되기 전). |
QAbstractSocket::ProxyConnectionTimeoutError | 16 | 프록시 서버에 대한 연결 시간이 초과되었거나 인증 단계에서 프록시 서버가 응답을 중지했습니다. |
QAbstractSocket::ProxyNotFoundError | 17 | setProxy()(또는 애플리케이션 프록시)로 설정된 프록시 주소를 찾을 수 없습니다. |
QAbstractSocket::ProxyProtocolError | 18 | 프록시 서버의 응답을 이해할 수 없어 프록시 서버와의 연결 협상에 실패했습니다. |
QAbstractSocket::OperationError | 19 | 소켓이 허용되지 않는 상태인 동안 작업을 시도했습니다. |
QAbstractSocket::SslInternalError | 20 | 사용 중인 SSL 라이브러리가 내부 오류를 보고했습니다. 라이브러리가 잘못 설치되었거나 잘못 구성되었기 때문일 수 있습니다. |
QAbstractSocket::SslInvalidUserDataError | 21 | 잘못된 데이터(인증서, 키, 사이퍼 등)가 제공되었고 이를 사용하여 SSL 라이브러리에서 오류가 발생했습니다. |
QAbstractSocket::TemporaryError | 22 | 일시적인 오류가 발생했습니다(예: 작업이 차단되고 소켓이 차단되지 않음). |
QAbstractSocket::UnknownSocketError | -1 | 확인되지 않은 오류가 발생했습니다. |
QAbstractSocket::error() 및 QAbstractSocket::errorOccurred()도 참조하세요 .
enum QAbstractSocket::SocketOption
이 열거형은 소켓에 설정할 수 있는 옵션을 나타냅니다. 원하는 경우 소켓에서 connected() 신호를 수신한 후 또는 QTcpServer 에서 새 소켓을 수신한 후에 설정할 수 있습니다.
상수 | 값 | 설명 |
---|---|---|
QAbstractSocket::LowDelayOption | 0 | 짧은 지연 시간을 위해 소켓을 최적화합니다. QTcpSocket 의 경우 TCP_NODELAY 옵션을 설정하고 Nagle의 알고리즘을 비활성화합니다. 활성화하려면 1로 설정합니다. |
QAbstractSocket::KeepAliveOption | 1 | SO_KEEPALIVE 소켓 옵션을 활성화하려면 이 값을 1로 설정합니다. |
QAbstractSocket::MulticastTtlOption | 2 | IP_MULTICAST_TTL(멀티캐스트 데이터그램용 TTL) 소켓 옵션을 설정하려면 이 값을 정수로 설정합니다. |
QAbstractSocket::MulticastLoopbackOption | 3 | 이 값을 1로 설정하면 IP_MULTICAST_LOOP(멀티캐스트 루프백) 소켓 옵션이 활성화됩니다. |
QAbstractSocket::TypeOfServiceOption | 4 | 이 옵션은 Windows에서는 지원되지 않습니다. 이 옵션은 IP_TOS 소켓 옵션에 매핑됩니다. 사용 가능한 값은 아래 표를 참조하세요. |
QAbstractSocket::SendBufferSizeSocketOption | 5 | OS 수준에서 소켓 전송 버퍼 크기를 바이트 단위로 설정합니다. 이 옵션은 SO_SNDBUF 소켓 옵션에 매핑됩니다. 이 옵션은 QIODevice 또는 QAbstractSocket 버퍼에는 영향을 미치지 않습니다. 이 열거형 값은 Qt 5.3에 도입되었습니다. |
QAbstractSocket::ReceiveBufferSizeSocketOption | 6 | OS 수준에서 소켓 수신 버퍼 크기를 바이트 단위로 설정합니다. 이 옵션은 SO_RCVBUF 소켓 옵션에 매핑됩니다. 이 옵션은 QIODevice 또는 QAbstractSocket 버퍼에는 영향을 미치지 않습니다( setReadBufferSize() 참조). 이 열거형 값은 Qt 5.3에 도입되었습니다. |
QAbstractSocket::PathMtuSocketOption | 7 | IP 스택이 현재 알고 있는 경로 최대 전송 단위(PMTU) 값이 있는 경우 이를 검색합니다. 일부 IP 스택은 전송을 위한 MTU 설정도 허용합니다. 이 열거형 값은 Qt 5.11에 도입되었습니다. |
TypeOfServiceOption에 사용할 수 있는 값은 다음과 같습니다:
값 | 설명 |
---|---|
224 | 네트워크 제어 |
192 | 내부 네트워크 제어 |
160 | CRITIC/ECP |
128 | 플래시 오버라이드 |
96 | 플래시 |
64 | 즉시 |
32 | 우선순위 |
0 | 루틴 |
QAbstractSocket::setSocketOption() 및 QAbstractSocket::socketOption()도 참조하세요 .
enum QAbstractSocket::SocketState
이 열거형은 소켓이 될 수 있는 다양한 상태를 설명합니다.
Constant | 값 | 설명 |
---|---|---|
QAbstractSocket::UnconnectedState | 0 | 소켓이 연결되지 않았습니다. |
QAbstractSocket::HostLookupState | 1 | 소켓이 호스트 이름 조회를 수행 중입니다. |
QAbstractSocket::ConnectingState | 2 | 소켓이 연결 설정을 시작했습니다. |
QAbstractSocket::ConnectedState | 3 | 연결이 설정되었습니다. |
QAbstractSocket::BoundState | 4 | 소켓이 주소 및 포트에 바인딩되었습니다. |
QAbstractSocket::ClosingState | 6 | 소켓이 닫히려는 중입니다(데이터가 아직 쓰기를 기다리는 중일 수 있음). |
QAbstractSocket::ListeningState | 5 | 내부 전용입니다. |
QAbstractSocket::state()도 참조하세요 .
enum QAbstractSocket::SocketType
이 열거형은 전송 계층 프로토콜을 설명합니다.
Constant | 값 | 설명 |
---|---|---|
QAbstractSocket::TcpSocket | 0 | TCP |
QAbstractSocket::UdpSocket | 1 | UDP |
QAbstractSocket::SctpSocket | 2 | SCTP |
QAbstractSocket::UnknownSocketType | -1 | TCP, UDP 및 SCTP 이외 |
QAbstractSocket::socketType()도 참조하세요 .
멤버 함수 문서
QAbstractSocket::QAbstractSocket(QAbstractSocket::SocketType socketType, QObject *parent)
socketType 유형의 새 추상 소켓을 생성합니다. parent 인자는 QObject 의 생성자에게 전달됩니다.
socketType(), QTcpSocket, QUdpSocket도 참조하세요 .
[virtual noexcept]
QAbstractSocket::~QAbstractSocket()
소켓을 파괴합니다.
void QAbstractSocket::abort()
현재 연결을 중단하고 소켓을 재설정합니다. disconnectFromHost ()와 달리 이 함수는 즉시 소켓을 닫고 쓰기 버퍼의 보류 중인 데이터를 모두 삭제합니다.
disconnectFromHost() 및 close()도 참조하세요 .
[virtual]
bool QAbstractSocket::bind(const QHostAddress &address, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)
BindMode mode 을 사용하여 포트 port 의 address 에 바인딩합니다.
UDP 소켓의 경우, 바인딩 후 지정된 주소와 포트에 UDP 데이터그램이 도착할 때마다 QUdpSocket::readyRead() 신호가 전송됩니다. 따라서 이 함수는 UDP 서버를 작성하는 데 유용합니다.
TCP 소켓의 경우 이 함수는 나가는 연결에 사용할 인터페이스를 지정하는 데 사용할 수 있으며, 네트워크 인터페이스가 여러 개인 경우에 유용합니다.
기본적으로 소켓은 DefaultForPlatform BindMode 을 사용하여 바인딩됩니다. 포트를 지정하지 않으면 임의의 포트가 선택됩니다.
성공하면 함수는 true
을 반환하고 소켓은 BoundState 으로 들어가고, 그렇지 않으면 false
을 반환합니다.
bool QAbstractSocket::bind(quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)
이것은 과부하된 함수입니다.
port 포트에 BindMode mode 을 사용하여 QHostAddress:아무것이나 바인딩합니다.
기본적으로 소켓은 DefaultForPlatform BindMode 을 사용하여 바인딩됩니다. 포트를 지정하지 않으면 임의의 포트가 선택됩니다.
[since 6.2]
bool QAbstractSocket::bind(QHostAddress::SpecialAddress addr, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)
이것은 과부하된 함수입니다.
BindMode mode 을 사용하여 포트 port 의 특수 주소 addr 에 바인딩합니다.
기본적으로 소켓은 DefaultForPlatform BindMode 을 사용하여 바인딩됩니다. 포트를 지정하지 않으면 임의의 포트가 선택됩니다.
이 함수는 Qt 6.2에 도입되었습니다.
[override virtual]
qint64 QAbstractSocket::bytesAvailable() const
재구현합니다: QIODevice::bytesAvailable() const.
읽기를 기다리는 수신 바이트 수를 반환합니다.
bytesToWrite() 및 read()도 참조하세요 .
[override virtual]
qint64 QAbstractSocket::bytesToWrite() const
재구현합니다: QIODevice::bytesToWrite() const.
쓰기를 기다리는 바이트 수를 반환합니다. 바이트는 제어가 이벤트 루프로 돌아가거나 flush()가 호출될 때 기록됩니다.
bytesAvailable() 및 flush()도 참조하세요 .
[override virtual]
void QAbstractSocket::close()
다시 구현합니다: QIODevice::close().
소켓에 대한 I/O 장치를 닫고 disconnectFromHost()를 호출하여 소켓의 연결을 닫습니다.
I/O 장치가 닫힐 때 발생하는 동작에 대한 설명은 QIODevice::close()를 참조하세요.
abort()도 참조하세요 .
[virtual]
void QAbstractSocket::connectToHost(const QString &hostName, quint16 port, QIODeviceBase::OpenMode openMode = ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = AnyIPProtocol)
주어진 port 에서 hostName 로 연결을 시도합니다. protocol 매개변수는 사용할 네트워크 프로토콜(예: IPv4 또는 IPv6)을 지정하는 데 사용할 수 있습니다.
소켓은 지정된 openMode 에서 열리고 먼저 HostLookupState 으로 들어간 다음 hostName 의 호스트 이름 조회를 수행합니다. 조회가 성공하면 hostFound()가 출력되고 QAbstractSocket 는 ConnectingState 로 들어갑니다. 그런 다음 조회에서 반환된 주소에 연결을 시도합니다. 마지막으로 연결이 설정되면 QAbstractSocket 은 ConnectedState 을 입력하고 connected()을 내보냅니다.
언제든지 소켓은 errorOccurred()를 전송하여 오류가 발생했음을 알릴 수 있습니다.
hostName 는 문자열 형식의 IP 주소(예: "43.195.83.32")이거나 호스트 이름(예: "example.com")일 수 있습니다. QAbstractSocket 은 필요한 경우에만 조회를 수행합니다. port 은 기본 바이트 순서입니다.
state(), peerName(), peerAddress(), peerPort() 및 waitForConnected()도 참조하세요 .
void QAbstractSocket::connectToHost(const QHostAddress &address, quint16 port, QIODeviceBase::OpenMode openMode = ReadWrite)
과부하가 걸린 함수입니다.
포트 port 에서 address 에 연결을 시도합니다.
[signal]
void QAbstractSocket::connected()
이 신호는 connectToHost()가 호출되고 연결이 성공적으로 설정된 후에 전송됩니다.
참고: 일부 운영 체제에서는 연결된() 신호가 connectToHost() 호출에서 로컬 호스트에 대한 연결을 위해 직접 발신될 수 있습니다.
connectToHost() 및 disconnected()도 참조하세요 .
[virtual]
void QAbstractSocket::disconnectFromHost()
소켓을 닫으려고 시도합니다. 쓰기를 기다리는 대기 중인 데이터가 있는 경우 QAbstractSocket 은 ClosingState 으로 들어가 모든 데이터가 쓰여질 때까지 기다립니다. 결국 UnconnectedState 으로 들어가 disconnected() 신호를 내보냅니다.
connectToHost()도 참조하세요 .
[signal]
void QAbstractSocket::disconnected()
이 신호는 소켓 연결이 끊어졌을 때 방출됩니다.
경고: 연결된 슬롯에서 이 신호의 sender()를 삭제해야 하는 경우 deleteLater() 기능을 사용하세요.
connectToHost(), disconnectFromHost() 및 abort()도 참조하세요 .
QAbstractSocket::SocketError QAbstractSocket::error() const
마지막으로 발생한 오류 유형을 반환합니다.
state() 및 errorString()도 참조하세요 .
[signal]
void QAbstractSocket::errorOccurred(QAbstractSocket::SocketError socketError)
이 신호는 오류가 발생한 후에 전송됩니다. socketError 매개변수는 발생한 오류의 유형을 설명합니다.
이 신호가 발생하면 소켓이 재연결을 시도할 준비가 되지 않은 것일 수 있습니다. 이 경우 이벤트 루프에서 재연결을 시도해야 합니다. 예를 들어, 타임아웃을 0ns로 설정하고 QChronoTimer::singleShot()을 사용합니다.
QAbstractSocket::SocketError 는 등록된 메타타입이 아니므로 대기 중인 연결의 경우 Q_DECLARE_METATYPE() 및 qRegisterMetaType()로 등록해야 합니다.
error(), errorString() 및 사용자 정의 Qt 유형 만들기를참조하십시오 .
bool QAbstractSocket::flush()
이 함수는 내부 쓰기 버퍼에서 기본 네트워크 소켓으로 차단 없이 가능한 한 많이 씁니다. 데이터가 쓰여진 경우 이 함수는 true
을 반환하고, 그렇지 않으면 false를 반환합니다.
버퍼링된 데이터를 즉시 전송하기 위해 QAbstractSocket 이 필요한 경우 이 함수를 호출하세요. 성공적으로 기록되는 바이트 수는 운영 체제에 따라 다릅니다. 대부분의 경우 제어가 이벤트 루프로 돌아가면 QAbstractSocket 이 자동으로 데이터 전송을 시작하므로 이 함수를 호출할 필요가 없습니다. 이벤트 루프가 없는 경우에는 waitForBytesWritten()를 대신 호출하세요.
write() 및 waitForBytesWritten()도 참조하세요 .
[signal]
void QAbstractSocket::hostFound()
이 신호는 connectToHost()가 호출되고 호스트 조회가 성공한 후에 발생합니다.
참고: Qt 4.6.3 이후 QAbstractSocket 는 DNS 결과가 캐시되었을 수 있으므로 connectToHost() 호출에서 직접 hostFound() 를 발생시킬 수 있습니다.
connected()도 참조하세요 .
[override virtual]
bool QAbstractSocket::isSequential() const
재구현합니다: QIODevice::isSequential() const.
bool QAbstractSocket::isValid() const
소켓이 유효하고 사용할 준비가 되면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
참고: 소켓의 상태가 ConnectedState 여야 읽기 및 쓰기가 가능합니다.
state()도 참조하세요 .
QHostAddress QAbstractSocket::localAddress() const
사용 가능한 경우 로컬 소켓의 호스트 주소를 반환하고, 그렇지 않으면 QHostAddress::Null 을 반환합니다.
일반적으로 호스트의 기본 IP 주소이지만 로컬 호스트에 연결할 경우 QHostAddress::LocalHost (127.0.0.1)일 수 있습니다.
localPort(), peerAddress() 및 setLocalAddress()도 참조하세요 .
quint16 QAbstractSocket::localPort() const
사용 가능한 경우 로컬 소켓의 호스트 포트 번호(기본 바이트 순서)를 반환하고, 그렇지 않으면 0을 반환합니다.
localAddress(), peerPort() 및 setLocalPort()도 참조하세요 .
QAbstractSocket::PauseModes QAbstractSocket::pauseMode() const
이 소켓의 일시 중지 모드를 반환합니다.
setPauseMode() 및 resume()도 참조하세요 .
QHostAddress QAbstractSocket::peerAddress() const
소켓이 ConnectedState 에 있으면 연결된 피어의 주소를 반환하고, 그렇지 않으면 QHostAddress::Null 을 반환합니다.
peerName(), peerPort(), localAddress(), setPeerAddress()도 참조하세요 .
QString QAbstractSocket::peerName() const
connectToHost()에 지정된 대로 피어 이름을 반환하거나 connectToHost()가 호출되지 않은 경우 빈 QString 을 반환합니다.
peerAddress(), peerPort() 및 setPeerName()도 참조하세요 .
quint16 QAbstractSocket::peerPort() const
소켓이 ConnectedState 에 있으면 연결된 피어의 포트를 반환하고, 그렇지 않으면 0을 반환합니다.
peerAddress(), localPort(), setPeerPort()도 참조하세요 .
QString QAbstractSocket::protocolTag() const
이 소켓의 프로토콜 태그를 반환합니다. 프로토콜 태그가 설정되어 있으면 내부적으로 생성될 때 QNetworkProxyQuery 에 전달되어 사용할 프로토콜 태그를 나타냅니다.
setProtocolTag() 및 QNetworkProxyQuery 을참조하세요 .
QNetworkProxy QAbstractSocket::proxy() const
이 소켓의 네트워크 프록시를 반환합니다. 기본적으로 QNetworkProxy::DefaultProxy 이 사용되며, 이는 이 소켓이 애플리케이션의 기본 프록시 설정을 쿼리한다는 의미입니다.
setProxy(), QNetworkProxy, QNetworkProxyFactory도 참조하세요 .
[signal]
void QAbstractSocket::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
이 신호는 인증이 필요한 proxy 을 사용할 때 전송될 수 있습니다. 그러면 authenticator 객체에 인증을 허용하고 연결을 계속하는 데 필요한 세부 정보를 채울 수 있습니다.
참고: 신호가 반환될 때 인증자가 새 정보로 채워지지 않으면 연결이 실패하므로 이 신호에 연결하기 위해 QueuedConnection을 사용할 수 없습니다.
QAuthenticator 및 QNetworkProxy 을참조하세요 .
qint64 QAbstractSocket::readBufferSize() const
내부 읽기 버퍼의 크기를 반환합니다. 이는 read() 또는 readAll()을 호출하기 전에 클라이언트가 수신할 수 있는 데이터의 양을 제한합니다.
읽기 버퍼 크기가 0(기본값)이면 버퍼에 크기 제한이 없으므로 데이터가 손실되지 않습니다.
setReadBufferSize() 및 read()도 참조하세요 .
[override virtual protected]
qint64 QAbstractSocket::readData(char *data, qint64 maxSize)
다시 구현합니다: QIODevice::readData(문자 *데이터, qint64 maxSize).
[override virtual protected]
qint64 QAbstractSocket::readLineData(char *data, qint64 maxlen)
다시 구현합니다: QIODevice::readLineData(문자 *데이터, qint64 maxSize).
[virtual]
void QAbstractSocket::resume()
소켓에서 데이터 전송을 계속합니다. 이 방법은 알림 시 일시 중지하도록 소켓을 설정하고 알림을 수신한 후에만 사용해야 합니다. 현재 지원되는 유일한 알림은 QSslSocket::sslErrors()입니다. 소켓이 일시 중지되지 않은 상태에서 이 메서드를 호출하면 정의되지 않은 동작이 발생합니다.
pauseMode() 및 setPauseMode()도 참조하세요 .
[protected]
void QAbstractSocket::setLocalAddress(const QHostAddress &address)
연결의 로컬 측 주소를 address 로 설정합니다.
QAbstractSocket 의 서브클래스에서 이 함수를 호출하여 연결이 설정된 후 localAddress() 함수의 반환값을 변경할 수 있습니다. 이 기능은 일반적으로 가상 연결 설정을 위한 프록시 연결에서 사용됩니다.
이 함수는 연결 전 소켓의 로컬 주소(예: QAbstractSocket::bind())를 바인딩하지 않는다는 점에 유의하세요.
localAddress(), setLocalPort() 및 setPeerAddress()도 참조하세요 .
[protected]
void QAbstractSocket::setLocalPort(quint16 port)
연결의 로컬 측 포트를 port 로 설정합니다.
QAbstractSocket 의 서브클래스에서 이 함수를 호출하여 연결이 설정된 후 localPort() 함수의 반환값을 변경할 수 있습니다. 이 기능은 일반적으로 가상 연결 설정을 위한 프록시 연결에서 사용됩니다.
이 함수는 연결 전에는 소켓의 로컬 포트를 바인딩하지 않습니다(예: QAbstractSocket::bind()).
localPort(), localAddress(), setLocalAddress() 및 setPeerPort()도 참조하세요 .
void QAbstractSocket::setPauseMode(QAbstractSocket::PauseModes pauseMode)
알림 수신 시 일시 중지할지 여부를 제어합니다. pauseMode 매개 변수는 소켓을 일시 중지해야 하는 조건을 지정합니다. 현재 지원되는 유일한 알림은 QSslSocket::sslErrors()입니다. PauseOnSslErrors 로 설정하면 소켓의 데이터 전송이 일시 중지되며 resume()를 호출하여 명시적으로 다시 사용하도록 설정해야 합니다. 기본적으로 이 옵션은 PauseNever 으로 설정되어 있습니다. 이 옵션은 서버에 연결하기 전에 호출해야 하며, 그렇지 않으면 정의되지 않은 동작이 발생합니다.
pauseMode() 및 resume()도 참조하세요 .
[protected]
void QAbstractSocket::setPeerAddress(const QHostAddress &address)
연결의 원격 측 주소를 address 로 설정합니다.
QAbstractSocket 의 서브클래스에서 이 함수를 호출하여 연결이 설정된 후 peerAddress() 함수의 반환값을 변경할 수 있습니다. 이 기능은 일반적으로 가상 연결 설정을 위한 프록시 연결에서 사용됩니다.
peerAddress(), setPeerPort() 및 setLocalAddress()도 참조하세요 .
[protected]
void QAbstractSocket::setPeerName(const QString &name)
원격 피어의 호스트 이름을 name 로 설정합니다.
QAbstractSocket 의 서브클래스에서 이 함수를 호출하여 연결이 설정된 후 peerName() 함수의 반환값을 변경할 수 있습니다. 이 기능은 일반적으로 가상 연결 설정을 위한 프록시 연결에서 사용됩니다.
peerName()도 참조하세요 .
[protected]
void QAbstractSocket::setPeerPort(quint16 port)
연결의 원격 측 포트를 port 로 설정합니다.
QAbstractSocket 의 서브클래스에서 이 함수를 호출하여 연결이 설정된 후 peerPort() 함수의 반환값을 변경할 수 있습니다. 이 기능은 일반적으로 가상 연결 설정을 위한 프록시 연결에서 사용됩니다.
peerPort(), setPeerAddress() 및 setLocalPort()도 참조하세요 .
void QAbstractSocket::setProtocolTag(const QString &tag)
이 소켓의 프로토콜 태그를 tag 로 설정합니다.
protocolTag()도 참조하세요 .
void QAbstractSocket::setProxy(const QNetworkProxy &networkProxy)
이 소켓에 대한 명시적 네트워크 프록시를 networkProxy 로 설정합니다.
이 소켓에 대한 프록시 사용을 사용하지 않으려면 QNetworkProxy::NoProxy 프록시 유형을 사용합니다:
socket->setProxy(QNetworkProxy::NoProxy);
프록시의 기본값은 QNetworkProxy::DefaultProxy 이며, 이는 소켓이 애플리케이션 설정을 사용한다는 의미입니다: 프록시가 QNetworkProxy::setApplicationProxy 으로 설정된 경우 이를 사용하고, 그렇지 않은 경우 QNetworkProxyFactory::setApplicationProxyFactory 로 설정된 경우 해당 팩토리를 QNetworkProxyQuery::TcpSocket 유형으로 쿼리합니다.
proxy(), QNetworkProxy, QNetworkProxyFactory::queryProxy()도 참조하세요 .
[virtual]
void QAbstractSocket::setReadBufferSize(qint64 size)
QAbstractSocket 의 내부 읽기 버퍼 크기를 size 바이트로 설정합니다.
버퍼 크기가 특정 크기로 제한되어 있는 경우 QAbstractSocket 은 이 크기 이상의 데이터를 버퍼링하지 않습니다. 예외적으로 버퍼 크기가 0이면 읽기 버퍼가 무제한이며 들어오는 모든 데이터가 버퍼링됩니다. 이것이 기본값입니다.
이 옵션은 특정 시점(예: 실시간 스트리밍 애플리케이션)에만 데이터를 읽거나 소켓에 너무 많은 데이터가 수신되어 애플리케이션의 메모리가 부족해지는 것을 방지하려는 경우에 유용합니다.
QTcpSocket 만 QAbstractSocket 의 내부 버퍼를 사용하고 QUdpSocket 는 버퍼링을 전혀 사용하지 않고 운영 체제에서 제공하는 암시적 버퍼링에 의존합니다. 따라서 QUdpSocket 에서 이 함수를 호출해도 아무런 효과가 없습니다.
readBufferSize() 및 read()도 참조하세요 .
[virtual]
bool QAbstractSocket::setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite)
네이티브 소켓 기술자 socketDescriptor 를 사용하여 QAbstractSocket 를 초기화합니다. socketDescriptor 이 유효한 소켓 기술자로 받아들여지면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. 소켓은 openMode 에 지정된 모드로 열리고 socketState 에 지정된 소켓 상태로 들어갑니다. 읽기 및 쓰기 버퍼가 지워지고 보류 중인 데이터가 모두 삭제됩니다.
참고: 동일한 네이티브 소켓 설명자로 두 개의 추상 소켓을 초기화할 수 없습니다.
socketDescriptor()도 참조하세요 .
[protected]
void QAbstractSocket::setSocketError(QAbstractSocket::SocketError socketError)
마지막으로 발생한 오류 유형을 socketError 로 설정합니다.
setSocketState() 및 setErrorString()도 참조하세요 .
[virtual]
void QAbstractSocket::setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value)
주어진 option 을 value 에 설명된 값으로 설정합니다.
socketOption()도 참조하세요 .
[protected]
void QAbstractSocket::setSocketState(QAbstractSocket::SocketState state)
소켓의 상태를 state 로 설정합니다.
state()도 참조하세요 .
[override virtual protected]
qint64 QAbstractSocket::skipData(qint64 maxSize)
다시 구현합니다: QIODevice::skipData(qint64 maxSize).
[virtual]
qintptr QAbstractSocket::socketDescriptor() const
사용 가능한 경우 QAbstractSocket 객체의 네이티브 소켓 기술자를 반환하고, 그렇지 않으면 -1을 반환합니다.
소켓이 QNetworkProxy 을 사용하는 경우 반환된 기술자는 네이티브 소켓 함수에서 사용할 수 없을 수 있습니다.
QAbstractSocket 이 UnconnectedState 에 있는 경우 소켓 기술자를 사용할 수 없습니다.
setSocketDescriptor()도 참조하세요 .
[virtual]
QVariant QAbstractSocket::socketOption(QAbstractSocket::SocketOption option)
option 옵션의 값을 반환합니다.
setSocketOption()도 참조하세요 .
QAbstractSocket::SocketType QAbstractSocket::socketType() const
소켓 유형(TCP, UDP 또는 기타)을 반환합니다.
QTcpSocket 및 QUdpSocket 을참조하세요 .
QAbstractSocket::SocketState QAbstractSocket::state() const
소켓의 상태를 반환합니다.
error()도 참조하세요 .
[signal]
void QAbstractSocket::stateChanged(QAbstractSocket::SocketState socketState)
이 신호는 QAbstractSocket 의 상태가 변경될 때마다 전송됩니다. socketState 매개변수는 새 상태입니다.
QAbstractSocket::SocketState 는 등록된 메타타입이 아니므로 대기 중인 연결의 경우 Q_DECLARE_METATYPE() 및 qRegisterMetaType()로 등록해야 합니다.
state() 및 사용자 정의 Qt 유형 만들기를참조하십시오 .
[override virtual]
bool QAbstractSocket::waitForBytesWritten(int msecs = 30000)
다시 구현합니다: QIODevice::waitForBytesWritten(int msecs).
이 함수는 소켓에 최소 1바이트가 쓰여지고 bytesWritten() 신호가 전송될 때까지 차단합니다. 이 함수는 msecs 밀리초 후에 시간 초과되며, 기본 시간 초과 시간은 30000밀리초입니다.
bytesWritten() 신호가 전송되면 true
을 반환하고, 그렇지 않으면 false
(오류가 발생했거나 작업이 시간 초과된 경우)을 반환합니다.
참고: 이 함수는 Windows에서 무작위로 실패할 수 있습니다. 소프트웨어가 Windows에서 실행되는 경우 이벤트 루프와 bytesWritten() 신호를 사용하는 것이 좋습니다.
waitForReadyRead()도 참조하세요 .
[virtual]
bool QAbstractSocket::waitForConnected(int msecs = 30000)
소켓이 연결될 때까지 최대 msecs 밀리초까지 기다립니다. 연결이 설정되면 이 함수는 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. false
을 반환하는 경우 error()을 호출하여 오류의 원인을 확인할 수 있습니다.
다음 예제는 연결이 설정될 때까지 최대 1초 동안 기다립니다:
socket->connectToHost("imap", 143);if (socket->waitForConnected(1000)) qDebug("Connected!");
msecs가 -1이면 이 함수는 시간 초과되지 않습니다.
참고: 이 함수는 호스트 조회를 완료하는 데 걸리는 시간에 따라 msecs 보다 약간 더 오래 대기할 수 있습니다.
참고: 이 함수를 여러 번 호출해도 시간이 누적되지 않습니다. 이 함수가 시간 초과되면 연결 프로세스가 중단됩니다.
참고: 이 함수는 Windows에서 무작위로 실패할 수 있습니다. 소프트웨어가 Windows에서 실행되는 경우 이벤트 루프와 connected() 신호를 사용하는 것이 좋습니다.
connectToHost() 및 connected()도 참조하세요 .
[virtual]
bool QAbstractSocket::waitForDisconnected(int msecs = 30000)
소켓 연결이 끊어질 때까지 최대 msecs 밀리초까지 기다립니다. 연결이 성공적으로 끊어지면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다(작업 시간이 초과되었거나 오류가 발생했거나 QAbstractSocket 이미 연결이 끊어진 경우). false
을 반환하는 경우 error()을 호출하여 오류의 원인을 확인할 수 있습니다.
다음 예는 연결이 종료될 때까지 최대 1초 동안 기다립니다:
socket->disconnectFromHost();if (socket->state()==. QAbstractSocket::UnconnectedState || socket->waitForDisconnected(1000)) { qDebug("Disconnected!");
msecs가 -1이면 이 함수는 시간 초과되지 않습니다.
참고: 이 함수는 Windows에서 무작위로 실패할 수 있습니다. 소프트웨어가 Windows에서 실행되는 경우 이벤트 루프와 disconnected() 신호를 사용하는 것이 좋습니다.
disconnectFromHost() 및 close()도 참조하세요 .
[override virtual]
bool QAbstractSocket::waitForReadyRead(int msecs = 30000)
다시 구현합니다: QIODevice::waitForReadyRead(int msecs).
이 함수는 새 데이터를 읽을 수 있고 readyRead() 신호가 전송될 때까지 차단합니다. 이 함수는 msecs 밀리초 후에 시간 초과되며, 기본 시간 초과 시간은 30000밀리초입니다.
readyRead() 신호가 전송되고 읽을 수 있는 새 데이터가 있는 경우 true
을 반환하고, 그렇지 않으면 false
(오류가 발생했거나 작업 시간이 초과된 경우)을 반환합니다.
참고: 이 함수는 Windows에서 무작위로 실패할 수 있습니다. 소프트웨어가 Windows에서 실행되는 경우 이벤트 루프와 readyRead() 신호를 사용하는 것이 좋습니다.
waitForBytesWritten()도 참조하세요 .
[override virtual protected]
qint64 QAbstractSocket::writeData(const char *data, qint64 size)
재구현합니다: QIODevice::writeData(const char *data, qint64 maxSize).
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.