QSocketNotifier Class

QSocketNotifier 클래스는 파일 기술자에 대한 모니터링 활동을 지원합니다. 더 보기...

헤더: #include <QSocketNotifier>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속합니다: QObject

공용 유형

enum Type { Read, Write, Exception }

공용 함수

(since 6.1) QSocketNotifier(QSocketNotifier::Type type, QObject *parent = nullptr)
QSocketNotifier(qintptr socket, QSocketNotifier::Type type, QObject *parent = nullptr)
virtual ~QSocketNotifier()
bool isEnabled() const
(since 6.1) bool isValid() const
(since 6.1) void setSocket(qintptr socket)
qintptr socket() const
QSocketNotifier::Type type() const

공용 슬롯

void setEnabled(bool enable)

Signals

void activated(QSocketDescriptor socket, QSocketNotifier::Type type)

재구현된 보호 함수

virtual bool event(QEvent *e) override

상세 설명

QSocketNotifier를 사용하면 Qt의 이벤트 루프를 파일 기술자에 기반한 다른 이벤트 루프와 통합할 수 있습니다. 파일 기술자 액션은 Qt의 메인 이벤트 루프(QCoreApplication::exec())에서 감지됩니다.

로우 레벨(일반적으로 플랫폼별) API를 사용하여 장치를 열면 소켓 알림을 생성하여 파일 기술자를 모니터링할 수 있습니다. 디스크립터가 알리미의 생성자에게 전달되면 소켓 알리미는 기본적으로 활성화되어 해당 유형에 해당하는 소켓 이벤트가 발생할 때마다 활성화() 신호를 내보냅니다. 소켓 알림기의 유형에 해당하는 이벤트가 발생할 때 호출하려는 슬롯에 활성화() 신호를 연결하세요.

설명자를 지정하지 않고 소켓 알림기를 생성할 수 있습니다. 이 경우 설명자를 얻은 후 setSocket() 함수를 호출해야 합니다.

소켓 알리미에는 읽기, 쓰기, 예외의 세 가지 유형이 있습니다. 유형은 Type 열거형에 의해 설명되며 소켓 알림을 구성할 때 지정해야 합니다. 구성 후에는 type() 함수를 사용하여 확인할 수 있습니다. 동일한 파일 기술자에 대한 읽기와 쓰기를 모두 모니터링해야 하는 경우 두 개의 소켓 알리미를 만들어야 합니다. 또한 동일한 소켓에 동일한 유형의 소켓 알리미(Read, Write, Exception)를 두 개 설치할 수 없다는 점에 유의하세요.

setEnabled() 함수를 사용하면 소켓 알리미를 비활성화하거나 활성화할 수 있습니다. 일반적으로 소켓 알리미는 명시적으로 활성화 또는 비활성화하는 것이 좋으며, 특히 쓰기 알리미의 경우 더욱 그렇습니다. 비활성화된 알리미는 소켓 이벤트를 무시합니다(소켓 알리미를 만들지 않은 것과 같은 효과). isEnabled () 함수를 사용하여 알리미의 현재 상태를 확인할 수 있습니다.

마지막으로 socket() 함수를 사용하여 소켓 식별자를 검색할 수 있습니다. 이 클래스는 QSocketNotifier라고 불리지만 일반적으로 소켓이 아닌 다른 유형의 장치에 사용됩니다. QTcpSocketQUdpSocket 은 신호를 통해 알림을 제공하므로 일반적으로 QSocketNotifier를 사용할 필요가 없습니다.

QFile, QProcess, QTcpSocket, QUdpSocket도 참조하세요 .

멤버 유형 문서

enum QSocketNotifier::Type

이 열거형은 소켓 알림이 인식할 수 있는 다양한 이벤트 유형을 설명합니다. 이 유형은 소켓 알림기를 구성할 때 지정해야 합니다.

동일한 파일 설명자에 대한 읽기와 쓰기를 모두 모니터링해야 하는 경우 소켓 알리미를 두 개 만들어야 합니다. 또한 동일한 소켓에 동일한 유형(읽기, 쓰기, 예외)의 소켓 알리미를 두 개 설치할 수 없다는 점에 유의하세요.

상수설명
QSocketNotifier::Read0읽을 데이터가 있습니다.
QSocketNotifier::Write1데이터를 쓸 수 있습니다.
QSocketNotifier::Exception2예외가 발생했습니다. 사용하지 않는 것이 좋습니다.

QSocketNotifier() 및 type()도 참조하세요 .

멤버 함수 문서

[explicit, since 6.1] QSocketNotifier::QSocketNotifier(QSocketNotifier::Type type, QObject *parent = nullptr)

디스크립터가 할당되지 않은 type 소켓 알림기를 생성합니다. parent 인수는 QObject 의 생성자에게 전달됩니다.

setSocket() 함수를 호출하여 모니터링할 디스크립터를 설정합니다.

이 함수는 Qt 6.1에 도입되었습니다.

setSocket(), isValid() 및 isEnabled()도 참조하십시오 .

QSocketNotifier::QSocketNotifier(qintptr socket, QSocketNotifier::Type type, QObject *parent = nullptr)

주어진 parent 으로 소켓 알림을 생성합니다. socket 를 활성화하고 주어진 type 의 이벤트를 감시합니다.

일반적으로 소켓 알리미는 명시적으로 활성화 또는 비활성화하는 것이 좋으며, 특히 쓰기 알리미의 경우 더욱 그렇습니다.

Windows 사용자를 위한 참고 사항: 차단 소켓으로 생성된 경우에도 QSocketNotifier에 전달된 소켓은 비차단 소켓이 됩니다.

setEnabled() 및 isEnabled()도 참조하세요 .

[virtual noexcept] QSocketNotifier::~QSocketNotifier()

이 소켓 알림을 삭제합니다.

[private signal] void QSocketNotifier::activated(QSocketDescriptor socket, QSocketNotifier::Type type)

이 신호는 소켓 알림이 활성화되어 있고 type 에 해당하는 소켓 이벤트가 발생할 때마다 전송됩니다.

소켓 식별자는 socket 매개변수로 전달됩니다.

참고: 이 신호는 비공개 신호입니다. 신호 연결에서 사용할 수 있지만 사용자가 방출할 수는 없습니다.

참고: 이 클래스에서는 신호 활성화가 오버로드됩니다. 함수 포인터 구문을 사용하여 이 신호에 연결하려면 이 예제와 같이 함수 포인터를 얻기 위한 편리한 헬퍼를 Qt에서 제공합니다:

connect(socketNotifier, QOverload<QSocketDescriptor, QSocketNotifier::Type>::of(&QSocketNotifier::activated),
    [=](QSocketDescriptor socket, QSocketNotifier::Type type){ /* ... */ });

type() 및 socket()도 참조하십시오 .

[override virtual protected] bool QSocketNotifier::event(QEvent *e)

다시 구현합니다: QObject::event(QEvent *e).

bool QSocketNotifier::isEnabled() const

알림이 활성화된 경우 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

setEnabled()도 참조하세요 .

[since 6.1] bool QSocketNotifier::isValid() const

알림이 유효하면(즉, 설명자가 할당되어 있으면) true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

이 함수는 Qt 6.1에 도입되었습니다.

setSocket()도 참조하십시오 .

[slot] void QSocketNotifier::setEnabled(bool enable)

enable 이 참이면 알림이 활성화되고, 그렇지 않으면 알림이 비활성화됩니다.

알림이 활성화되면 type 에 해당하는 소켓 이벤트가 발생할 때마다 활성화() 신호를 보냅니다. 비활성화하면 소켓 이벤트를 무시합니다(소켓 알림을 생성하지 않은 것과 동일한 효과).

쓰기 알림은 일반적으로 활성화() 신호가 발생한 직후에 비활성화해야 합니다.

isEnabled() 및 activated()도 참조하세요 .

[since 6.1] void QSocketNotifier::setSocket(qintptr socket)

이 알리미에 socket 을 할당합니다.

참고: 이 알림은 부작용으로 비활성화되며 다시 활성화해야 합니다.

이 기능은 Qt 6.1에 도입되었습니다.

socket(), setEnabled() 및 isValid()도 참조하세요 .

qintptr QSocketNotifier::socket() const

이 객체에 할당된 소켓 식별자를 반환합니다.

setSocket(), isValid() 및 type()도 참조하세요 .

QSocketNotifier::Type QSocketNotifier::type() const

생성자에 지정된 소켓 이벤트 유형을 반환합니다.

socket()도 참조하세요 .

© 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.