QLocalServer Class
QLocalServer 클래스는 로컬 소켓 기반 서버를 제공합니다. 더 보기...
헤더: | #include <QLocalServer> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
상속합니다: | QObject |
공용 유형
enum | SocketOption { NoOptions, UserAccessOption, GroupAccessOption, OtherAccessOption, WorldAccessOption, AbstractNamespaceOption } |
flags | SocketOptions |
속성
- socketOptions : SocketOptions
공공 기능
QLocalServer(QObject *parent = nullptr) | |
virtual | ~QLocalServer() |
QBindable<QLocalServer::SocketOptions> | bindableSocketOptions() |
void | close() |
QString | errorString() const |
QString | fullServerName() const |
virtual bool | hasPendingConnections() const |
bool | isListening() const |
bool | listen(const QString &name) |
bool | listen(qintptr socketDescriptor) |
(since 6.3) int | listenBacklogSize() const |
int | maxPendingConnections() const |
virtual QLocalSocket * | nextPendingConnection() |
QAbstractSocket::SocketError | serverError() const |
QString | serverName() const |
(since 6.3) void | setListenBacklogSize(int size) |
void | setMaxPendingConnections(int numConnections) |
void | setSocketOptions(QLocalServer::SocketOptions options) |
qintptr | socketDescriptor() const |
QLocalServer::SocketOptions | socketOptions() const |
bool | waitForNewConnection(int msec = 0, bool *timedOut = nullptr) |
신호
void | newConnection() |
정적 공용 멤버
bool | removeServer(const QString &name) |
보호된 함수
(since 6.8) void | addPendingConnection(QLocalSocket *socket) |
virtual void | incomingConnection(quintptr socketDescriptor) |
상세 설명
이 클래스는 들어오는 로컬 소켓 연결을 수락할 수 있게 해줍니다.
listen()를 호출하면 서버가 지정된 키에서 들어오는 연결을 수신 대기하기 시작합니다. 그런 다음 클라이언트가 서버에 연결할 때마다 newConnection() 신호가 전송됩니다.
nextPendingConnection()를 호출하여 보류 중인 연결을 연결된 QLocalSocket 으로 수락합니다. 이 함수는 클라이언트와 통신하는 데 사용할 수 있는 QLocalSocket 에 대한 포인터를 반환합니다.
오류가 발생하면 serverError()는 오류 유형을 반환하고 errorString()를 호출하여 사람이 읽을 수 있는 오류 설명을 얻을 수 있습니다.
연결을 수신 대기할 때 서버가 수신 대기 중인 이름은 serverName()를 통해 확인할 수 있습니다.
close()를 호출하면 QLocalServer가 들어오는 연결에 대한 수신 대기 중지를 해제합니다.
QLocalServer는 이벤트 루프와 함께 사용하도록 설계되었지만 이벤트 루프 없이도 사용할 수 있습니다. 이 경우 연결이 사용 가능하거나 시간 초과가 만료될 때까지 차단하는 waitForNewConnection()를 사용해야 합니다.
QLocalSocket 및 QTcpServer 을참조하세요 .
멤버 유형 문서
열거형 QLocalServer::소켓 옵션
플래그 QLocalServer::소켓 옵션
이 열거형은 소켓을 만드는 데 사용할 수 있는 가능한 옵션을 설명합니다. 이 옵션은 소켓에 대한 액세스 권한을 지원하는 플랫폼(Linux, Windows)의 액세스 권한을 변경합니다. GroupAccess와 OtherAccess는 플랫폼에 따라 의미가 약간 다를 수 있습니다. Linux 및 Android에서는 추상 주소가 있는 소켓을 사용할 수 있으며, 이러한 소켓에는 소켓 권한이 의미가 없습니다.
상수 | 값 | 설명 |
---|---|---|
QLocalServer::NoOptions | 0x0 | 액세스 제한이 설정되지 않았습니다. |
QLocalServer::UserAccessOption | 0x01 | 액세스는 소켓을 만든 프로세스와 동일한 사용자로 제한됩니다. |
QLocalServer::GroupAccessOption | 0x2 | Linux에서는 소켓을 만든 사용자가 아닌 동일한 그룹으로 액세스가 제한됩니다. Windows에서는 프로세스의 기본 그룹으로 액세스가 제한됩니다. |
QLocalServer::OtherAccessOption | 0x4 | Linux에서는 소켓을 만든 사용자 및 그룹을 제외한 모든 사람이 액세스할 수 있습니다. Windows에서는 모든 사람이 액세스할 수 있습니다. |
QLocalServer::WorldAccessOption | 0x7 | 액세스 제한이 없습니다. |
QLocalServer::AbstractNamespaceOption | 0x8 | 수신 대기 소켓은 추상 네임스페이스에 만들어집니다. 이 플래그는 Linux에만 해당됩니다. 다른 플랫폼의 경우 코드 이식성을 위해 이 플래그는 WorldAccessOption과 동일합니다. |
SocketOptions 유형은 QFlags<SocketOption>에 대한 typedef입니다. 이 유형은 SocketOption 값의 OR 조합을 저장합니다.
socketOptions 를참조하세요 .
속성 문서
[bindable]
socketOptions : SocketOptions
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 속성에는 소켓의 작동 방식을 제어하는 소켓 옵션이 있습니다.
예를 들어, 소켓은 소켓에 연결할 수 있는 사용자 아이디에 대한 액세스를 제한할 수 있습니다.
이러한 옵션은 listen()가 호출되기 전에 설정해야 합니다.
Linux의 유닉스 도메인 소켓과 같은 일부 경우에는 파일 시스템 권한에 따라 소켓에 대한 액세스가 결정되며 유마스크를 기반으로 만들어집니다. 액세스 플래그를 설정하면 이를 재정의하고 지정된 대로 액세스를 제한하거나 허용합니다.
macOS와 같은 다른 Unix 기반 운영 체제에서는 Unix 도메인 소켓에 대한 파일 권한이 적용되지 않으며 기본적으로 WorldAccess를 사용하므로 이러한 권한 플래그는 아무런 영향을 미치지 않습니다.
Windows의 경우 UserAccessOption 는 동일한 사용자가 실행하는 상승된 프로세스가 만든 로컬 서버에 상승되지 않은 프로세스가 연결할 수 있도록 허용하는 데 충분합니다. GroupAccessOption 은 프로세스의 기본 그룹을 나타냅니다(Windows 설명서의 TokenPrimaryGroup 참조). OtherAccessOption 은 잘 알려진 "Everyone" 그룹을 나타냅니다.
Linux 플랫폼에서는 파일 시스템과 독립적인 추상 네임스페이스에 소켓을 만들 수 있습니다. 이러한 종류의 소켓을 사용한다는 것은 권한 옵션을 무시한다는 것을 의미합니다. 다른 플랫폼에서 AbstractNamespaceOption 은 WorldAccessOption 과 동일합니다.
기본적으로 플래그가 설정되어 있지 않으면 액세스 권한이 플랫폼 기본값입니다.
listen()도 참조하세요 .
멤버 함수 문서
[explicit]
QLocalServer::QLocalServer(QObject *parent = nullptr)
주어진 parent 을 사용하여 새 로컬 소켓 서버를 만듭니다.
listen()도 참조하세요 .
[virtual noexcept]
QLocalServer::~QLocalServer()
QLocalServer 객체를 삭제합니다. 서버가 연결을 수신 대기 중이면 자동으로 닫힙니다.
서버가 삭제되기 전에 아직 연결되어 있는 모든 클라이언트 QLocal소켓은 연결을 끊거나 부모를 다시 지정해야 합니다.
close()도 참조하세요 .
[protected, since 6.8]
void QLocalServer::addPendingConnection(QLocalSocket *socket)
이 함수는 QLocalServer::incomingConnection()에서 호출하여 socket 을 보류 중인 수신 연결 목록에 추가합니다.
참고: 보류 중인 연결 메커니즘을 중단시키지 않으려면 다시 구현된 incomingConnection()에서 이 멤버를 호출하는 것을 잊지 마세요. 이 함수는 소켓이 추가된 후 newConnection() 신호를 방출합니다.
이 함수는 Qt 6.8에 도입되었습니다.
incomingConnection() 및 newConnection()도 참조하십시오 .
void QLocalServer::close()
수신 연결에 대한 수신 대기 중지. 기존 연결은 영향을 받지 않지만 새 연결은 거부됩니다.
isListening() 및 listen()도 참조하세요 .
QString QLocalServer::errorString() const
serverError()에서 보고된 현재 오류에 적합한 사람이 읽을 수 있는 메시지를 반환합니다. 적절한 문자열을 사용할 수 없으면 빈 문자열이 반환됩니다.
serverError()도 참조하세요 .
QString QLocalServer::fullServerName() const
서버가 수신 대기 중인 전체 경로를 반환합니다.
참고: 플랫폼에 따라 다릅니다.
listen() 및 serverName()도 참조하세요 .
[virtual]
bool QLocalServer::hasPendingConnections() const
서버에 보류 중인 연결이 있으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
nextPendingConnection() 및 setMaxPendingConnections()도 참조하세요 .
[virtual protected]
void QLocalServer::incomingConnection(quintptr socketDescriptor)
이 가상 함수는 새 연결을 사용할 수 있을 때 QLocalServer 에 의해 호출됩니다. socketDescriptor 은 수락된 연결의 기본 소켓 설명자입니다.
기본 구현은 QLocalSocket 을 생성하고 소켓 기술자를 설정한 다음 QLocalSocket 을 보류 중인 연결의 내부 목록에 저장합니다. 마지막으로 newConnection()가 전송됩니다.
연결이 가능할 때 서버의 동작을 변경하려면 이 함수를 다시 구현하세요.
newConnection(), nextPendingConnection() 및 QLocalSocket::setSocketDescriptor()도 참조하세요 .
bool QLocalServer::isListening() const
서버가 수신 연결을 수신 대기 중이면 true
, 그렇지 않으면 false를 반환합니다.
bool QLocalServer::listen(const QString &name)
서버에 name 에서 들어오는 연결을 수신 대기하도록 지시합니다. 서버가 현재 수신 대기 중이면 false를 반환합니다. 성공하면 참을 반환하고 그렇지 않으면 거짓을 반환합니다.
name 는 단일 이름일 수 있으며 QLocalServer 는 올바른 플랫폼별 경로를 결정합니다. serverName()는 listen에 전달된 이름을 반환합니다.
일반적으로는 "foo"와 같은 이름을 전달하지만, Unix에서는 "/tmp/foo"와 같은 경로일 수도 있고, Windows에서는 "\\.\pipe\foo"와 같은 파이프 경로일 수도 있습니다.
참고: Unix에서 수신 대기 모드를 닫지 않고 서버가 충돌하면 AddressInUseError로 실패합니다. 새 서버를 만들려면 파일을 제거해야 합니다. Windows에서는 두 개의 로컬 서버가 동시에 동일한 파이프를 수신 대기할 수 있지만 모든 연결은 서버 중 한 서버로 연결됩니다.
serverName(), isListening() 및 close()도 참조하세요 .
bool QLocalServer::listen(qintptr socketDescriptor)
서버가 socketDescriptor 에서 들어오는 연결을 수신 대기하도록 지시합니다. 이 속성은 서버가 현재 수신 대기 중이면 false
을 반환합니다. 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. 소켓은 별도의 플랫폼별 함수가 호출되지 않은 상태에서 새 연결을 수락할 준비가 되어 있어야 합니다. 소켓은 비차단 모드로 설정됩니다.
serverName(), fullServerName()는 플랫폼에서 이 옵션을 지원하는 경우 이름이 포함된 문자열을 반환하고, 그렇지 않으면 빈 QString 을 반환합니다. 특히 Linux에서 지원하는 추상 네임스페이스의 소켓 주소에 인쇄할 수 없는 문자가 포함된 경우 유용한 이름을 반환하지 않습니다.
isListening() 및 close()도 참조하세요 .
[since 6.3]
int QLocalServer::listenBacklogSize() const
수락할 연결의 백로그 큐 크기를 반환합니다.
이 함수는 Qt 6.3에 도입되었습니다.
setListenBacklogSize()도 참조하세요 .
int QLocalServer::maxPendingConnections() const
수락 대기 중인 최대 연결 수를 반환합니다. 기본값은 30개입니다.
setMaxPendingConnections() 및 hasPendingConnections()도 참조하세요 .
[signal]
void QLocalServer::newConnection()
이 신호는 새 연결을 사용할 수 있을 때마다 발신됩니다.
hasPendingConnections() 및 nextPendingConnection()도 참조하세요 .
[virtual]
QLocalSocket *QLocalServer::nextPendingConnection()
다음 보류 중인 연결을 연결된 QLocalSocket 객체로 반환합니다.
이 소켓은 서버의 자식으로 생성되므로 QLocalServer 객체가 삭제되면 자동으로 삭제됩니다. 그래도 메모리 낭비를 피하기 위해 객체가 완료되면 명시적으로 삭제하는 것이 좋습니다.
nullptr
보류 중인 연결이 없을 때 이 함수를 호출하면 반환됩니다.
hasPendingConnections(), newConnection(), incomingConnection()도 참조하세요 .
[static]
bool QLocalServer::removeServer(const QString &name)
listen() 호출을 실패하게 만들 수 있는 모든 서버 인스턴스를 제거하고 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. 이 함수는 이전 서버 인스턴스가 정리되지 않은 경우 크래시에서 복구하기 위한 함수입니다.
Windows에서는 이 함수가 아무 작업도 수행하지 않으며, Unix에서는 name 에 의해 지정된 소켓 파일을 제거합니다.
경고: 실행 중인 인스턴스의 소켓을 제거하지 않도록 주의하세요.
QAbstractSocket::SocketError QLocalServer::serverError() const
마지막으로 발생한 오류 유형 또는 NoError 를 반환합니다.
errorString()도 참조하세요 .
QString QLocalServer::serverName() const
서버가 연결을 수신 대기 중이면 서버 이름을 반환하고, 그렇지 않으면 QString()을 반환합니다.
listen() 및 fullServerName()도 참조하세요 .
[since 6.3]
void QLocalServer::setListenBacklogSize(int size)
수락할 연결의 백로그 큐 크기를 size 로 설정합니다. 운영 체제에서 이 값을 줄이거나 무시할 수 있습니다. 기본적으로 큐 크기는 50입니다.
참고: 이 속성은 listen()를 호출하기 전에 설정해야 합니다.
이 함수는 Qt 6.3에 도입되었습니다.
listenBacklogSize()도 참조하세요 .
void QLocalServer::setMaxPendingConnections(int numConnections)
허용 대기 중인 최대 연결 수를 numConnections 로 설정합니다. QLocalServer 은 nextPendingConnection()이 호출되기 전에 numConnections 수신 연결을 더 이상 허용하지 않습니다.
참고: QLocalServer 이 최대 보류 중인 연결 수에 도달하면 새 연결 수락을 중지하지만 운영 체제에서는 여전히 대기열에 유지하여 클라이언트가 연결되었음을 알리는 결과를 초래할 수 있습니다.
maxPendingConnections() 및 hasPendingConnections()도 참조하세요 .
qintptr QLocalServer::socketDescriptor() const
서버가 수신 명령을 수신 대기하는 데 사용하는 네이티브 소켓 기술자를 반환하거나 서버가 수신 대기 중이 아닌 경우 -1을 반환합니다.
디스크립터의 유형은 플랫폼에 따라 다릅니다:
- Windows에서 반환되는 값은 Winsock 2 소켓 핸들입니다.
- 무결성에서 반환되는 값은 QTcpServer 소켓 기술자이며 유형은 socketDescriptor 에 의해 정의됩니다.
- 다른 모든 UNIX 계열 운영 체제에서 유형은 수신 소켓을 나타내는 파일 기술자입니다.
listen()도 참조하세요 .
QLocalServer::SocketOptions QLocalServer::socketOptions() const
소켓에 설정된 소켓 옵션을 반환합니다.
참고: socketOptions 프로퍼티에 대한 게터 함수입니다.
setSocketOptions()도 참조하세요 .
bool QLocalServer::waitForNewConnection(int msec = 0, bool *timedOut = nullptr)
최대 msec 밀리초 동안 또는 들어오는 연결을 사용할 수 있을 때까지 기다립니다. 연결이 가능하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. 작업 시간이 초과되고 timedOut 이 nullptr
이 아닌 경우 *timedOut이 true로 설정됩니다.
이것은 차단 함수 호출입니다. 함수가 반환될 때까지 전체 애플리케이션이 응답을 중지하므로 단일 스레드 GUI 애플리케이션에서는 사용하지 않는 것이 좋습니다. waitForNewConnection()은 사용 가능한 이벤트 루프가 없을 때 주로 유용합니다.
차단하지 않는 대안은 newConnection() 신호에 연결하는 것입니다.
msec가 -1이면 이 함수는 시간 초과되지 않습니다.
hasPendingConnections() 및 nextPendingConnection()도 참조하세요 .
© 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.