이 페이지에서

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)

신호

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

재구현된 보호 함수

virtual bool event(QEvent *e) override

상세 설명

QSocketNotifier를 사용하면 Qt의 이벤트 루프를 파일 디스크립터를 기반으로 하는 다른 이벤트 루프와 통합할 수 있습니다. 파일 디스크립터에 대한 동작은 Qt의 메인 이벤트 루프(QCoreApplication::exec())에서 감지됩니다.

저수준(일반적으로 플랫폼별) API를 사용하여 장치를 열면, 파일 디스크립터를 모니터링하기 위해 소켓 알림기를 생성할 수 있습니다. 디스크립터가 노티파이어의 생성자에 전달되면, 소켓 노티파이어는 기본적으로 활성화됩니다. 즉, 해당 유형에 해당하는 소켓 이벤트가 발생할 때마다 activated() 신호를 방출합니다. activated() 신호를 소켓 노티파이어의 유형에 해당하는 이벤트가 발생했을 때 호출되기를 원하는 슬롯에 연결하십시오.

디스크립터가 할당되지 않은 상태로 소켓 알림기를 생성할 수도 있습니다. 이 경우, 디스크립터를 확보한 후에 setSocket() 함수를 호출해야 합니다.

소켓 알림기는 읽기(read), 쓰기(write), 예외(exception)의 세 가지 유형이 있습니다. 유형은 Type 열거형으로 정의되며, 소켓 알림기를 생성할 때 반드시 지정해야 합니다. 생성 후에는 type() 함수를 사용하여 유형을 확인할 수 있습니다. 동일한 파일 디스크립터에 대한 읽기와 쓰기를 모두 모니터링해야 하는 경우, 두 개의 소켓 알림기를 생성해야 한다는 점에 유의하십시오. 또한 동일한 소켓에 동일한 유형(Read, Write, Exception)의 소켓 알림기를 두 개 설치할 수는 없다는 점에도 유의하십시오.

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

마지막으로, ` socket()` 함수를 사용하여 소켓 식별자를 가져올 수 있습니다. 이 클래스의 이름은 QSocketNotifier이지만, 일반적으로 소켓 이외의 다른 유형의 장치에 사용됩니다. ` QTcpSocket ` 및 ` QUdpSocket `는 신호를 통해 알림을 제공하므로, 일반적으로 이 장치들에 대해 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 ` 매개변수를 통해 전달됩니다.

참고: 이 신호는 비공개 신호입니다. 신호 연결에서 사용할 수 있지만 사용자가 직접 발생시킬 수는 없습니다.

참고: 이 신호는 오버로드되어 있습니다. 이 신호에 연결하려면:

// Connect using qOverload:
connect(socketNotifier, qOverload(&QSocketNotifier::activated),
        receiver, &ReceiverClass::slot);

// Or using a lambda:
connect(socketNotifier, qOverload(&QSocketNotifier::activated),
        this, [](QSocketDescriptor socket, QSocketNotifier::Type type) { /* handle activated */ });
더 많은 예제와 접근 방식에 대해서는 오버로드된 신호에 연결하기를 참조하십시오.

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 가 true이면 알림 기능이 활성화되고, 그렇지 않으면 비활성화됩니다.

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

쓰기 알림기는 일반적으로 activated() 신호가 발송된 직후 비활성화되어야 합니다.

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()도 참조하십시오 .

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