이 페이지에서

QLocalSocket Class

QLocalSocket 클래스는 로컬 소켓을 제공합니다. 더 보기...

헤더: #include <QLocalSocket>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
상속: QIODevice

공개 유형

enum LocalSocketError { ConnectionRefusedError, PeerClosedError, ServerNotFoundError, SocketAccessError, SocketResourceError, …, UnknownSocketError }
enum LocalSocketState { UnconnectedState, ConnectingState, ConnectedState, ClosingState }
(since 6.2) enum SocketOption { NoOptions, AbstractNamespaceOption }
flags SocketOptions

속성

공개 함수

QLocalSocket(QObject *parent = nullptr)
virtual ~QLocalSocket()
void abort()
QBindable<QLocalSocket::SocketOptions> bindableSocketOptions()
void connectToServer(QIODeviceBase::OpenMode openMode = ReadWrite)
void connectToServer(const QString &name, QIODeviceBase::OpenMode openMode = ReadWrite)
void disconnectFromServer()
QLocalSocket::LocalSocketError error() const
bool flush()
QString fullServerName() const
bool isValid() const
qint64 readBufferSize() const
QString serverName() const
void setReadBufferSize(qint64 size)
void setServerName(const QString &name)
bool setSocketDescriptor(qintptr socketDescriptor, QLocalSocket::LocalSocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite)
void setSocketOptions(QLocalSocket::SocketOptions option)
qintptr socketDescriptor() const
QLocalSocket::SocketOptions socketOptions() const
QLocalSocket::LocalSocketState state() const
bool waitForConnected(int msecs = 30000)
bool waitForDisconnected(int msecs = 30000)

재구현된 공용 함수

virtual qint64 bytesAvailable() const override
virtual qint64 bytesToWrite() const override
virtual bool canReadLine() const override
virtual void close() override
virtual bool isSequential() const override
virtual bool open(QIODeviceBase::OpenMode openMode = ReadWrite) override
virtual bool waitForBytesWritten(int msecs = 30000) override
virtual bool waitForReadyRead(int msecs = 30000) override

신호

void connected()
void disconnected()
void errorOccurred(QLocalSocket::LocalSocketError socketError)
void stateChanged(QLocalSocket::LocalSocketState socketState)

재구현된 보호 함수

virtual qint64 readData(char *data, qint64 c) override
virtual qint64 readLineData(char *data, qint64 maxSize) override
virtual qint64 skipData(qint64 maxSize) override
virtual qint64 writeData(const char *data, qint64 c) override

상세 설명

Windows에서는 명명된 파이프이고, Unix에서는 로컬 도메인 소켓입니다.

오류가 발생하면 error()는 오류 유형을 반환하며, errorString()를 호출하여 발생한 상황에 대한 사람이 읽을 수 있는 설명을 얻을 수 있습니다.

QLocalSocket은 이벤트 루프와 함께 사용하도록 설계되었지만, 이벤트 루프 없이도 사용할 수 있습니다. 이 경우, waitForConnected(), waitForReadyRead(), waitForBytesWritten() 및 waitForDisconnected()을 사용해야 하며, 이 함수들은 작업이 완료되거나 타임아웃이 만료될 때까지 차단됩니다.

QLocalServer도 참조하십시오 .

멤버 유형 문서

enum QLocalSocket::LocalSocketError

LocalServerError 열거형은 발생할 수 있는 오류를 나타냅니다. 가장 최근에 발생한 오류는 ` QLocalSocket::error()` 메서드를 호출하여 가져올 수 있습니다.

상수값설명
QLocalSocket::ConnectionRefusedErrorQAbstractSocket::ConnectionRefusedError상대방이 연결을 거부했거나(또는 시간 초과가 발생했습니다).
QLocalSocket::PeerClosedErrorQAbstractSocket::RemoteHostClosedError원격 소켓이 연결을 닫았습니다. 원격 닫기 알림이 전송된 후 클라이언트 소켓(즉, 이 소켓)이 닫힌다는 점에 유의하십시오.
QLocalSocket::ServerNotFoundErrorQAbstractSocket::HostNotFoundError로컬 소켓 이름을 찾을 수 없습니다.
QLocalSocket::SocketAccessErrorQAbstractSocket::SocketAccessError응용 프로그램에 필요한 권한이 부족하여 소켓 작업이 실패했습니다.
QLocalSocket::SocketResourceErrorQAbstractSocket::SocketResourceError로컬 시스템의 리소스가 부족했습니다(예: 소켓 수가 너무 많음).
QLocalSocket::SocketTimeoutErrorQAbstractSocket::SocketTimeoutError소켓 작업이 시간 초과되었습니다.
QLocalSocket::DatagramTooLargeErrorQAbstractSocket::DatagramTooLargeError데이터그램 크기가 운영 체제의 제한(최소 8192바이트)을 초과했습니다.
QLocalSocket::ConnectionErrorQAbstractSocket::NetworkError연결 중에 오류가 발생했습니다.
QLocalSocket::UnsupportedSocketOperationErrorQAbstractSocket::UnsupportedSocketOperationError요청된 소켓 작업은 로컬 운영 체제에서 지원되지 않습니다.
QLocalSocket::OperationErrorQAbstractSocket::OperationError소켓이 해당 작업을 허용하지 않는 상태일 때 작업이 시도되었습니다.
QLocalSocket::UnknownSocketErrorQAbstractSocket::UnknownSocketError알 수 없는 오류가 발생했습니다.

enum QLocalSocket::LocalSocketState

이 열거형은 소켓이 가질 수 있는 다양한 상태를 설명합니다.

상수값설명
QLocalSocket::UnconnectedStateQAbstractSocket::UnconnectedState소켓이 연결되어 있지 않습니다.
QLocalSocket::ConnectingStateQAbstractSocket::ConnectingState소켓이 연결을 설정하기 시작했습니다.
QLocalSocket::ConnectedStateQAbstractSocket::ConnectedState연결이 설정되었습니다.
QLocalSocket::ClosingStateQAbstractSocket::ClosingState소켓이 닫힐 예정입니다(아직 쓰기 대기 중인 데이터가 있을 수 있음).

QLocalSocket::state()도 참조하십시오 .

[since 6.2] enum QLocalSocket::SocketOption
flags QLocalSocket::SocketOptions

이 열거형은 서버에 연결하는 데 사용할 수 있는 가능한 옵션을 설명합니다. 현재 리눅스와 안드로이드에서는 추상 주소에 바인딩된 소켓을 수신 대기 중인 서버에 대한 연결을 지정하는 데 사용됩니다.

상수값설명
QLocalSocket::NoOptions0x00설정된 옵션이 없습니다.
QLocalSocket::AbstractNamespaceOption0x01소켓이 추상 주소에 연결을 시도합니다. 이 플래그는 리눅스와 안드로이드에 한정됩니다. 다른 플랫폼에서는 무시됩니다.

이 열거형은 Qt 6.2에서 도입되었습니다.

SocketOptions 유형은 QFlags<SocketOption>에 대한 typedef입니다. 이 유형은 SocketOption 값들의 OR 조합을 저장합니다.

socketOptions도 참조하십시오 .

속성 문서

[bindable, since 6.2] socketOptions : SocketOptions

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 소켓 옵션을 저장합니다.

옵션은 소켓이 UnconnectedState 상태일 때 설정해야 합니다.

이 열거형은 Qt 6.2에서 도입되었습니다.

액세스 함수:

QLocalSocket::SocketOptions socketOptions() const
void setSocketOptions(QLocalSocket::SocketOptions option)

connectToServer()도 참조하십시오 .

멤버 함수 문서

QLocalSocket::QLocalSocket(QObject *parent = nullptr)

새로운 로컬 소켓을 생성합니다. ` parent ` 인수는 ` QObject`의 생성자에 전달됩니다.

[virtual noexcept] QLocalSocket::~QLocalSocket()

소켓을 삭제하고, 필요한 경우 연결을 종료합니다.

void QLocalSocket::abort()

현재 연결을 중단하고 소켓을 초기화합니다. ` disconnectFromServer()`과는 달리, 이 함수는 소켓을 즉시 닫으며 쓰기 버퍼에 남아 있는 모든 데이터를 지웁니다.

disconnectFromServer() 및 close()도 참조하십시오 .

[override virtual] qint64 QLocalSocket::bytesAvailable() const

QIODevice::bytesAvailable() const를 재구현합니다.

[override virtual] qint64 QLocalSocket::bytesToWrite() const

QIODevice::bytesToWrite() const를 재구현합니다.

[override virtual] bool QLocalSocket::canReadLine() const

QIODevice::canReadLine() const를 재구현합니다.

[override virtual] void QLocalSocket::close()

QIODevice::close()를 재구현합니다.

소켓에 대한 I/O 장치를 닫고, disconnectFromServer()를 호출하여 소켓의 연결을 종료합니다.

I/O 장치가 닫힐 때 발생하는 동작에 대한 설명은 QIODevice::close()을 참조하십시오.

abort()도 참조하십시오 .

void QLocalSocket::connectToServer(QIODeviceBase::OpenMode openMode = ReadWrite)

serverName()에 연결을 시도합니다. 연결을 열기 전에 setServerName()를 호출해야 합니다. 또는 connectToServer(const QString &name, OpenMode openMode);를 사용할 수도 있습니다.

소켓은 지정된 openMode 에서 열리며, 먼저 ConnectingState 상태로 진입합니다. 연결이 수립되면 QLocalSocket 은 ConnectedState 상태로 전환되며 connected()를 발생시킵니다.

이 함수를 호출한 후, 소켓은 오류가 발생했음을 알리기 위해 errorOccurred()을 발신할 수 있습니다.

state(), serverName() 및 waitForConnected()도 참조하십시오 .

void QLocalSocket::connectToServer(const QString &name, QIODeviceBase::OpenMode openMode = ReadWrite)

서버 name 을 설정하고 해당 서버에 연결을 시도합니다.

소켓은 지정된 openMode 에서 열리고, 먼저 ConnectingState 로 들어갑니다. 연결이 설정되면, QLocalSocket 는 ConnectedState 로 들어가고 connected()를 발신합니다.

이 함수를 호출한 후, 소켓은 errorOccurred()을 호출하여 오류가 발생했음을 알릴 수 있습니다.

이 함수는 오버로드된 함수입니다.

state(), serverName() 및 waitForConnected()도 참조하십시오 .

[signal] void QLocalSocket::connected()

이 신호는 connectToServer()가 호출되고 연결이 성공적으로 설정된 후에 발생합니다.

connectToServer() 및 disconnected()도 참조하십시오 .

void QLocalSocket::disconnectFromServer()

소켓을 닫으려고 시도합니다. 쓰기를 기다리고 있는 데이터가 남아 있는 경우, ` QLocalSocket `는 ` ClosingState ` 상태로 진입하여 모든 데이터가 쓰여질 때까지 대기합니다. 결국 ` UnconnectedState ` 상태로 진입하여 ` disconnected()` 신호를 발생시킵니다.

connectToServer()도 참조하십시오 .

[signal] void QLocalSocket::disconnected()

이 신호는 소켓 연결이 끊어졌을 때 발생합니다.

connectToServer(), disconnectFromServer(), abort(), connected()도 참조하십시오 .

QLocalSocket::LocalSocketError QLocalSocket::error() const

마지막으로 발생한 오류의 유형을 반환합니다.

state() 및 errorString()도 참조하십시오 .

[signal] void QLocalSocket::errorOccurred(QLocalSocket::LocalSocketError socketError)

이 신호는 오류가 발생한 후 전송됩니다. ‘ socketError ’ 매개변수는 발생한 오류의 유형을 나타냅니다.

error() 및 errorString()도 참조하십시오 .

bool QLocalSocket::flush()

이 함수는 차단 없이 내부 쓰기 버퍼의 데이터를 가능한 한 많이 소켓으로 전송합니다. 데이터가 전송된 경우, 이 함수는 ` true`를 반환하고, 그렇지 않은 경우 `false`를 반환합니다.

QLocalSocket 가 버퍼된 데이터를 즉시 전송하기 시작해야 하는 경우 이 함수를 호출하십시오. 성공적으로 쓰여진 바이트 수는 운영 체제에 따라 다릅니다. 대부분의 경우, 제어권이 이벤트 루프로 돌아가면 QLocalSocket 가 자동으로 데이터 전송을 시작하므로 이 함수를 호출할 필요가 없습니다. 이벤트 루프가 없는 경우에는 대신 waitForBytesWritten()를 호출하십시오.

write() 및 waitForBytesWritten()도 참조하십시오 .

QString QLocalSocket::fullServerName() const

소켓이 연결된 서버 경로를 반환합니다.

참고: 이 함수의 반환값은 플랫폼에 따라 다릅니다.

connectToServer() 및 serverName()도 참조하십시오 .

[override virtual] bool QLocalSocket::isSequential() const

QIODevice::isSequential() const를 재구현합니다.

bool QLocalSocket::isValid() const

소켓이 유효하고 사용 준비가 되어 있으면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다.

참고: 읽기 및 쓰기 작업이 이루어지려면 소켓의상태가 ConnectedState 이어야 합니다.

state() 및 connectToServer()도 참조하십시오 .

[override virtual] bool QLocalSocket::open(QIODeviceBase::OpenMode openMode = ReadWrite)

QIODevice::open(QIODeviceBase::OpenMode 모드)를 재구현합니다.

connectToServer(OpenMode 모드)와 동일합니다. 소켓은 openMode 에서 setServerName()로 정의된 서버에 대해 열립니다.

대부분의 다른 QIODevice 하위 클래스와는 달리, open()은 장치를 직접 열지 않을 수도 있습니다. 소켓이 이미 연결되어 있거나 연결할 서버가 정의되지 않은 경우 이 함수는 false를 반환하며, 그 외의 모든 경우에는 true를 반환합니다. 장치가 실제로 열리거나(또는 연결에 실패한 경우) connected() 또는 errorOccurred() 신호가 발생합니다.

자세한 내용은 connectToServer()을 참조하십시오.

qint64 QLocalSocket::readBufferSize() const

내부 읽기 버퍼의 크기를 반환합니다. 이는 ` read()` 또는 ` readAll()`를 호출하기 전에 클라이언트가 수신할 수 있는 데이터의 양을 제한합니다. 읽기 버퍼 크기가 0(기본값)인 경우 버퍼에 크기 제한이 없음을 의미하며, 이로 인해 데이터 손실이 발생하지 않습니다.

setReadBufferSize() 및 read()도 참조하십시오 .

[override virtual protected] qint64 QLocalSocket::readData(char *data, qint64 c)

QIODevice::readData(char *data, qint64 maxSize)를 재구현합니다.

[override virtual protected] qint64 QLocalSocket::readLineData(char *data, qint64 maxSize)

QIODevice::readLineData(char *data, qint64 maxSize)를 재구현합니다.

QString QLocalSocket::serverName() const

setServerName()에서 지정된 피어의 이름을 반환하거나, setServerName()가 호출되지 않았거나 connectToServer()이 실패한 경우에는 빈 QString 을 반환합니다.

setServerName(), connectToServer() 및 fullServerName()도 참조하십시오 .

void QLocalSocket::setReadBufferSize(qint64 size)

QLocalSocket 의 내부 읽기 버퍼 크기를 size 바이트로 설정합니다.

버퍼 크기가 특정 크기로 제한된 경우, ` QLocalSocket `는 이 크기 이상의 데이터를 버퍼링하지 않습니다. 단, 버퍼 크기가 0인 경우는 예외로, 읽기 버퍼에 제한이 없으며 들어오는 모든 데이터가 버퍼링됩니다. 이것이 기본값입니다.

이 옵션은 특정 시점에만 데이터를 읽는 경우(예: 실시간 스트리밍 애플리케이션)나, 소켓이 너무 많은 데이터를 수신하여 결국 애플리케이션의 메모리가 부족해지는 것을 방지하고자 할 때 유용합니다.

readBufferSize() 및 read()도 참조하십시오 .

void QLocalSocket::setServerName(const QString &name)

연결할 피어의 name 를 설정합니다. Windows에서는 name이 명명된 파이프의 이름이며, Unix에서는 name이 로컬 도메인 소켓의 이름입니다.

이 함수는 소켓이 연결되지 않은 상태에서 호출되어야 합니다.

serverName()도 참조하십시오 .

bool QLocalSocket::setSocketDescriptor(qintptr socketDescriptor, QLocalSocket::LocalSocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite)

네이티브 소켓 디스크립터 ` socketDescriptor`를 사용하여 ` QLocalSocket `를 초기화합니다. ` socketDescriptor `가 유효한 소켓 디스크립터로 인정되면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다. 소켓은 ` openMode`로 지정된 모드로 열리며, ` socketState`로 지정된 소켓 상태로 진입합니다.

참고: 동일한 네이티브 소켓 디스크립터로 두 개의 로컬 소켓을 초기화할수는 없습니다 .

참조: socketDescriptor(), state(), openMode().

[override virtual protected] qint64 QLocalSocket::skipData(qint64 maxSize)

QIODevice::skipData(qint64 maxSize)를 재구현합니다.

qintptr QLocalSocket::socketDescriptor() const

QLocalSocket 객체의 네이티브 소켓 디스크립터가 있는 경우 이를 반환하고, 그렇지 않으면 -1을 반환합니다.

QLocalSocket 가 ` UnconnectedState` 상태일 때는 소켓 디스크립터를 사용할 수 없습니다. 디스크립터의 유형은 플랫폼에 따라 다릅니다:

  • Windows에서는 반환 값이 Winsock 2 소켓 핸들입니다.
  • INTEGRITY에서는 반환 값이 QTcpSocket 소켓 디스크립터이며, 유형은 socketDescriptor 에 의해 정의됩니다.
  • 그 외 모든 유닉스 계열 운영 체제에서는 소켓을 나타내는 파일 디스크립터입니다.

setSocketDescriptor()도 참조하십시오 .

QLocalSocket::LocalSocketState QLocalSocket::state() const

소켓의 상태를 반환합니다.

error()도 참조하십시오 .

[signal] void QLocalSocket::stateChanged(QLocalSocket::LocalSocketState socketState)

이 신호는 QLocalSocket 의 상태가 변경될 때마다 발생합니다. socketState 매개변수는 새로운 상태를 나타냅니다.

state()도 참조하십시오 .

[override virtual] bool QLocalSocket::waitForBytesWritten(int msecs = 30000)

QIODevice::waitForBytesWritten(int msecs)를 재구현합니다.

bool QLocalSocket::waitForConnected(int msecs = 30000)

소켓이 연결될 때까지 최대 msecs 밀리초 동안 대기합니다. 연결이 설정된 경우, 이 함수는 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다. false 를 반환하는 경우, error()를 호출하여 오류의 원인을 확인할 수 있습니다.

다음 예제는 연결이 설정될 때까지 최대 1초 동안 대기합니다:

socket->connectToServer("market");
if (socket->waitForConnected(1000))
    qDebug("Connected!");

msecs 가 -1인 경우, 이 함수는 타임아웃되지 않습니다.

connectToServer() 및 connected()도 참조하십시오 .

bool QLocalSocket::waitForDisconnected(int msecs = 30000)

소켓 연결이 끊어질 때까지 최대 msecs 밀리초 동안 대기합니다. 연결이 성공적으로 끊어진 경우, 이 함수는 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다(작업이 시간 초과되었거나, 오류가 발생했거나, 해당 QLocalSocket 가 이미 연결이 끊어진 경우). false 를 반환하는 경우, error()를 호출하여 오류 원인을 확인할 수 있습니다.

다음 예제는 연결이 종료될 때까지 최대 1초 동안 대기합니다:

socket->disconnectFromServer();
if (socket->state()== QLocalSocket::UnconnectedState
    || socket->waitForDisconnected(1000)) {
    qDebug("Disconnected!");
}

msecs 가 -1인 경우, 이 함수는 시간 초과되지 않습니다.

disconnectFromServer() 및 close()도 참조하십시오 .

[override virtual] bool QLocalSocket::waitForReadyRead(int msecs = 30000)

재구현: QIODevice::waitForReadyRead(int msecs).

이 함수는 읽을 수 있는 데이터가 준비되고 readyRead() 신호가 발생될 때까지 대기합니다. 이 함수는 msecs 밀리초 후에 타임아웃되며, 기본 타임아웃 시간은 30000 밀리초입니다.

읽을 수 있는 데이터가 있으면 이 함수는 ` true `를 반환하고, 그렇지 않은 경우(오류가 발생했거나 작업이 타임아웃된 경우) ` false `를 반환합니다.

waitForBytesWritten()도 참조하십시오 .

[override virtual protected] qint64 QLocalSocket::writeData(const char *data, qint64 c)

QIODevice::writeData(const char *data, qint64 maxSize)를 재구현합니다.

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