일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 중소규모택지
- C API
- 월세
- 엑스퍼트생일축하해
- 국토교통부
- file read
- 프리미어 영상저장
- lua for windows
- #신혼부부 #결혼준비 #신혼부부희망타운신혼부부특별공급
- lua interpreter
- file open
- 프리미어 영상변환
- TCP/IP
- C++ API
- file write
- #부동산전자거래 #부동산전자계약 #부동산계약 #부동산전자계약방법 #부동산전자계약하는법 #부동산계약방법 #부동산중개수수료 #부동산중개수수료아끼기 #부동산복비아끼기
- FILE TRANSFER
- object
- meta table
- 수도권주택공급
- Lua
- 청량리역한양수자인192
- 티몬삼겹살데이
- lua setup
- QTcpServer
- 등록임대주택
- 엑스퍼트2주년
- 찾다죽는줄
- lua install
- QT TCP
- Today
- Total
Value Creator의 IT(프로그래밍 / 전자제품)
#8 [QT4] Network programming - Client 본문
* QT4와 QT5의 소스코드는 호환이 되지 않으니 참고 바랍니다.
1. QtNetwork 모듈이 TCP/IP 클라이언트/서버를 사용할 수 있는 클래스를 제공함.
2. QtNetwork 모듈이 포함하는 클래스
QAbstractSocket --> QTcpSocket
3. QTcpSocket 클래스에서 사용하는 함수
read()
write()
readLine()
readAll()
((QIODevice 클래스에서 상속받은))
getChar()
putChar()
ungetChar()
데이터 전송 : byteWritten() 시그널을 통해 이벤트를 쉽게 호출
데이터 수신 : readyRead() 시그널을 통해 이벤트 제공
소켓 서비스 종료 : disconnectFromHost() 함수 호출, disconnected() 함수 호출
* 서버/클라이언트 간 요청과 응답을 위한 멤버 함수
waitForConnected() : 서버와 클라이언트가 연결될 때까지 블로킹
waitForReadyRead() : 새로운 데이터가 수신될 때까지 블로킹
waitForByteWritten() : 소켓으로부터 데이터가 전송될 때까지 블로킹
waitForDisconnected() : 함수는 연결이 닫힐 때까지 블로킹
4. Fortune Client, Fortune Server 예제(fortune : 랜덤함수 비슷하게 임의 값 도출하는 함수)
4.1 Fortune Client
https://doc.qt.io/archives/qt-4.8/qt-network-fortuneclient-example.html
Fortune Client <-> Fortune Server
클라이언트가 서버에게 메세지를 요청하면, 서버가 클라이언트에게 메세지를 내려준다.
데이터 전송 프로토콜 : QDataStream 사용하여 서버로부터 메세지 한 줄을 요청.
* 연결 절차
1) 서버로 연결하면서 fortune 요청(임의의 메세지 요청)
2) 서버는 16비트 integer 길이의 fortune 메세지 응답.
* QTcpSocket은 두 가지 접근 방법 제공.
1) 비동기 방식(non-blocking)
-> 제어가 Qt 루프 이벤트 반환시 스케줄되고 수행됨.
동작 완료시 신호 발생.
연결 완료시 QTcpSocket이 connected() 반환.
2) 동기 방식(blocking)
-> non-GUI, 멀티스레드 어플리케이션.
wiatFor...() 함수 호출 가능.
호출 스레드
5. 주석 달아놓은 소스코드
6. 아래는 원문
'1. 프로그래밍 > 3) QT' 카테고리의 다른 글
#11 QT 네트워크 소켓 프로그래밍 해석 (0) | 2019.06.17 |
---|---|
#9 [QT4] Network programming - Server (0) | 2019.06.14 |
#5 QT Creator 예제 - 계산기, 캘린더, 메모장 (0) | 2019.04.10 |
#4 QT Programming 예제(QListWidget, QComboBox, QTimer, QFileDialog, QGraphicsView, QTabWidget, QProgressBar) (0) | 2019.04.10 |
#3 QT Creator 예제 프로그램 (0) | 2019.04.09 |