관리 메뉴

Value Creator의 IT(프로그래밍 / 전자제품)

#18 TCP File 전송 프로그램(Server / Client) - 제작자 WhatTheBlock 본문

1. 프로그래밍/3) QT

#18 TCP File 전송 프로그램(Server / Client) - 제작자 WhatTheBlock

valuecreatort 2019. 6. 20. 20:19
반응형

1. QT의 TCP 기반의 파일 전송 프로그램을 github에서 찾았습니다.

 

2. 중국어로 되어 있어서 한국어로 번역해서 공유합니다.

 

[원본 링크]

1) 클라이언트

https://github.com/WhatTheBlock/Qt_TcpFileSender

 

2) 서버

https://github.com/WhatTheBlock/Qt_TcpFileServer

 

 

[한국어 번역본]

클라이언트(Sender)와 서버(Server)

Qt_TcpFileSender-masterKO.zip
4.14MB
Qt_TcpFileServer-masterKO.zip
3.76MB

 

 

※ 하지만 위의 코드 모두 QT5 이상에서 호환 가능합니다.

QT4에서 호환가능 하도록 수정한 코드를 아래에수록합니다.

Qt_TcpFileSender_Server-masterKO.zip
9.10MB

 

* 수정사항

[클라이언트, 서버 소스코드 공통 적용]

1) 헤더 파일에 #include <QtWidgets> 대신 아래 코드 삽입

#include <QtGlobal>
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
#  include <QtWidgets>
#else
#  include <QtGui>
#endif

--> QT 버전에 따라 둘 중에 하나를 선택합니다.

QT5 : QtWidgets 사용, QT4 : QtGui 사용

 

2) 코드 내의 모든 QStringLiteral --> QString::fromUtf8으로 변경

 

--> QT4에서는 QStringLiteral 호환이 안됩니다. 또한 일반 QString으로 할 경우 한글 깨짐 현상이 있어서 QString::fromUtf8으로 바꿨습니다.

참고 사이트 https://mokga.tistory.com/78

 

[Qt] 한글꺠짐 현상(파일입출력)

Qt 에서 파일 입출력시에 한글이 깨져서 읽히는 경우가 있다. 다방면으로 삽질한 결과 해결방법을 찾을 수 있었다. 원인 : Qt 에서 QString 에 담겨진 한글내용을 파일로 저장하는 경우에 인코딩 형식이 달라 한글..

mokga.tistory.com

 

[서버 소스코드 한정]

3) IP주소

기존 : tcpserver.listen(QHostAddress::AnyIPv4,16998)

변경 : tcpserver.listen(QHostAddress::Any,16998)

 

QT4에서는 Any로 사용하는 것 같습니다.

 

 

 

3. 사용방법

1) 서버를 실행합니다.

2) 수신 대기 시작을 누릅니다.

 

3) 클라이언트를 실행하고, 파일을 고릅니다. 파일을 고르면 시작 버튼이 활성화됩니다.

 

 

4) Server IP : 127.0.0.1입력하고, Server Port : 16998 입력합니다.

127.0.0.1은 로컬 호스트로서, 자기 자신과 통신 테스트를 하는 ip입니다.

Port는 서버 쪽 소스코드에서 원하는 값으로 바꿀 수 있습니다.

클라이언트와 서버의 ip와 포트만 맞춰주면 됩니다.

다른 컴퓨터와 통신을 하려면, 받으려는 쪽은 서버만 켜고, 보내려는 쪽은 클라이언트만 켭니다.

서버의 IP와 PORT를 올바르게 입력해주면 파일 전송이 잘 됩니다.

 

5) 전송 시작을 누릅니다.

 

 

 

6) 잘 전송이 되었는지 확인합니다.

 

서버 쪽 빌드 폴더 안에 들어갑니다.

 

보낸 파일은 filesdnd-qt-master.zip 이라는 파일입니다.

 

 

추후에 경로 지정이나 서버 닫기, 일시 중지, 클라이언트 닫기, 선택한 파일 표시 등 기능 추가가 필요해보입니다.

 

 

 

 

 

 

 

 

 

 

반응형
Comments