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도 참조하십시오 .
멤버 유형 문서
enum QLocalServer::SocketOption
flags QLocalServer::SocketOptions
이 열거형은 소켓을 생성할 때 사용할 수 있는 옵션을 설명합니다. 이는 소켓에 대한 접근 권한을 지원하는 플랫폼(Linux, Windows)에서 접근 권한을 변경합니다. GroupAccess와 OtherAccess의 의미는 플랫폼에 따라 약간 다를 수 있습니다. 리눅스와 안드로이드에서는 추상 주소를 가진 소켓을 사용할 수 있으며, 이러한 소켓의 경우 소켓 권한은 의미가 없습니다.
| 상수 | 값 | 설명 |
|---|---|---|
QLocalServer::NoOptions | 0x0 | 접근 제한이 설정되어 있지 않습니다. |
QLocalServer::UserAccessOption | 0x01 | 소켓을 생성한 프로세스와 동일한 사용자만 액세스할 수 있습니다. |
QLocalServer::GroupAccessOption | 0x2 | Linux에서는 소켓을 생성한 사용자와는 다르지만, 동일한 그룹의 사용자만 액세스할 수 있습니다. Windows에서는 프로세스의 기본 그룹에 속한 사용자만 액세스할 수 있습니다. |
QLocalServer::OtherAccessOption | 0x4 | Linux에서는 소켓을 생성한 사용자와 그룹을 제외한 모든 사용자가 액세스할 수 있습니다. Windows에서는 모든 사용자가 액세스할 수 있습니다. |
QLocalServer::WorldAccessOption | 0x7 | 액세스 제한이 없습니다. |
QLocalServer::AbstractNamespaceOption | 0x8 | 수신 대기 소켓은 추상 네임스페이스에 생성됩니다. 이 플래그는 리눅스 전용입니다. 다른 플랫폼의 경우, 코드 이식성을 위해 이 플래그는 WorldAccessOption과 동일하게 처리됩니다. |
SocketOptions 유형은 QFlags<SocketOption>에 대한 typedef입니다. 이 유형은 SocketOption 값들의 OR 조합을 저장합니다.
socketOptions도 참조하십시오 .
속성 설명서
[bindable] socketOptions : SocketOptions
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 속성은 소켓의 작동 방식을 제어하는 소켓 옵션을 포함합니다.
예를 들어, 소켓은 어떤 사용자 ID가 소켓에 연결할 수 있는지를 제한할 수 있습니다.
이러한 옵션은 listen()가 호출되기 전에 설정되어야 합니다.
Linux의 Unix 도메인 소켓과 같은 일부 경우, 소켓에 대한 액세스는 파일 시스템 권한에 의해 결정되며 umask를 기반으로 생성됩니다. 액세스 플래그를 설정하면 이 설정이 재정의되어 지정된 대로 액세스가 제한되거나 허용됩니다.
macOS와 같은 다른 유닉스 기반 운영 체제는 유닉스 도메인 소켓에 대한 파일 권한을 따르지 않으며, 기본적으로 WorldAccess가 설정되어 있으므로 이러한 권한 플래그는 아무런 효과가 없습니다.
Windows에서는 ` UserAccessOption `를 설정하는 것만으로도, 일반 권한을 가진 프로세스가 동일한 사용자가 실행한 관리자 권한 프로세스가 생성한 로컬 서버에 연결할 수 있습니다. ` GroupAccessOption `는 프로세스의 기본 그룹을 가리킵니다(Windows 문서의 TokenPrimaryGroup 참조). ` OtherAccessOption `는 잘 알려진 "Everyone" 그룹을 가리킵니다.
리눅스 플랫폼에서는 파일 시스템과 독립적인 추상 네임스페이스에 소켓을 생성할 수 있습니다. 이러한 종류의 소켓을 사용하면 권한 옵션이 무시됩니다. 다른 플랫폼에서는 AbstractNamespaceOption 가 WorldAccessOption 와 동일합니다.
기본적으로 어떤 플래그도 설정되어 있지 않으며, 액세스 권한은 플랫폼의 기본값을 따릅니다.
액세스 함수:
| QLocalServer::SocketOptions | socketOptions() const |
| void | setSocketOptions(QLocalServer::SocketOptions options) |
listen()도 참조하십시오 .
멤버 함수 문서
[explicit] QLocalServer::QLocalServer(QObject *parent = nullptr)
지정된 parent 를 사용하여 새로운 로컬 소켓 서버를 생성합니다.
listen()도 참조하십시오 .
[virtual noexcept] QLocalServer::~QLocalServer()
QLocalServer 객체를 삭제합니다. 서버가 연결을 수신 대기 중이라면 자동으로 닫힙니다.
서버가 삭제되기 전에, 아직 연결된 상태인 모든 클라이언트 QLocalSocket은 연결을 끊거나 다른 부모 객체에 재할당되어야 합니다.
close()도 참조하십시오 .
[protected, since 6.8] void QLocalServer::addPendingConnection(QLocalSocket *socket)
이 함수는 ` QLocalServer::incomingConnection()`에 의해 호출되어 ` socket `를 대기 중인 수신 연결 목록에 추가합니다.
참고: 보류 중인 연결(Pending Connections) 메커니즘의 정상적인 작동을 방해하지 않으려면, 재구현한 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 에서 들어오는 연결을 수신 대기하도록 지시합니다. 서버가 이미 수신 대기 중이라면 listen()은 실패합니다. 성공 시 true 을 반환하고, 그렇지 않은 경우 false 을 반환합니다.
name 단일 이름을 지정할 수 있으며, QLocalServer 가 플랫폼별 올바른 경로를 결정합니다. serverName()는 listen()에 전달된 이름을 반환합니다.
일반적으로 "foo"와 같은 이름을 전달하면 되지만, 유닉스에서는 "/tmp/foo"와 같은 경로일 수도 있고, 윈도우에서는 "\\.\pipe\foo "와 같은 파이프 경로일 수도 있습니다.
참고: 유닉스에서 서버가 이전에 종료되지 않은 채로 중단된 경우, listen()은 AddressInUseError 오류로 실패합니다. 새 서버를 생성하려면 먼저 해당 파일을 삭제해야 합니다. 윈도우에서는 두 개의 로컬 서버가 동시에 동일한 파이프를 감시할 수 있지만, 들어오는 각 연결은 이들 중 하나에 연결됩니다.
serverName(), isListening() 및 close()도 참조하십시오 .
bool QLocalServer::listen(qintptr socketDescriptor)
서버가 socketDescriptor 에서 들어오는 연결을 수신 대기하도록 지시합니다. 이 속성은 서버가 현재 수신 대기 중일 경우 false 을 반환합니다. 성공 시 true 을 반환하고, 그렇지 않은 경우 false 을 반환합니다. 소켓은 플랫폼별 추가 함수가 호출되지 않은 상태에서 새로운 연결을 수락할 준비가 되어 있어야 합니다. 소켓은 비차단 모드로 설정됩니다.
serverName(), fullServerName()은 플랫폼에서 이 옵션을 지원하는 경우 이름이 포함된 문자열을 반환할 수 있으며, 그렇지 않은 경우 빈 QString 을 반환합니다. 특히, 리눅스에서 지원하는 추상 네임스페이스 내 소켓의 주소에는 인쇄 불가능한 문자가 포함되어 있는 경우 유용한 이름을 반환하지 않습니다.
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 대기 중인 연결이 없는 상태에서 이 함수가 호출되면 is가 반환됩니다.
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 소켓 핸들입니다.
- INTEGRITY에서는 반환 값이 QTcpServer 소켓 디스크립터이며, 유형은 socketDescriptor 에 정의되어 있습니다.
- 그 외 모든 유닉스 계열 운영 체제에서는 유형이 수신 대기 중인 소켓을 나타내는 파일 디스크립터입니다.
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()도 참조하십시오 .
© 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.