Unix Domain Socket (UDS)
로컬시스템의 파일시스템을 이용하여 내부프로세스간 통신을 위해 사용한다.
INET 계층에서의 통신이 TCP/IP 4계층을 모두 거치는것과 다르게, UDS 는 어플리케이션 계층에서 TCP 계층까지만 메시지가 전달되고, 다시 곧바로 어플리케이션 계층으로 메시지가 올라가게된다.
범용적인 IPC 로써 사용가능한다.
Qt 에서는 QLocalSocket 이라는 클래스를 이용한다.
헤더파일 |
#include <QLocalSocket> |
qmake 옵션 추가 |
QT+=network |
사용가능한 버전 |
Qt4.4 |
상속 |
QIODevice |
Public Types
enum | LocalSocketError { ConnectionRefusedError, PeerClosedError, ServerNotFoundError, SocketAccessError, ..., UnknownSocketError } |
enum | LocalSocketState { UnconnectedState, ConnectingState, ConnectedState, ClosingState } |
시그널
QLocalSocket 클래스는 local socket 기능을 제공한다.
윈도우환경에서는 pipe 라고하며 유닉스에서는 local domain socket 이라고 불린다.
에러가 벌생하면 socketError() 를 반환하며 타입은 error 이다. errorString() 함수는 사용자가 정의한 것을 리턴받을 수 있다.
QLocalSocket 는 이벤트 루프를 위해 디자인 되었지만, 다른 용도로 사용할 수 있다.
waitForConnected(), waitForReadyRead(), waitForBytesWritten(), and waitForDisconnected() which blocks until the operation is complete or the timeout expires.
서버 관련해서는 QLocalServer. 를 참고
예제는 localfortuneserver 를 참고한다.
! 도매인소켓사용시 해제를 잘해줘야됨
소켓 생성시 /tmp (Linux) 위치에 도매인 내임이 생성된다.
kj@kj:/tmp$ ls -alh ivisDomain srwxr-xr-x 1 kj kj 0 12월 18 18:12 ivisDomain |
이상!