Qt/Network
![category 대표 이미지](https://blog.kakaocdn.net/dn/bMwmlk/btsD7lDWeuR/okCLdZQjeJqAhfuWnChgiK/img.png)
-
Stream을 사용하는 이유 프로그램은 일반적으로 누군가로부터 정보를 전달 하거거나, 누군가에게 정보를 전달받는 작업의 연속이다. 정보를 주고받기 위해 Computer는 수많은 입출력(I/O) 장치와 연결된다. Keyboard, Mouse, Monitor, Printer 등 각각 입출력 장치 종류나 각각의 제조사들마다 입출력 방법을 별도로 만드는 것은 불가능하다. 마치 C++ 언어가 CPU 제조사마다 다른것과 같다. 마치 애플이 8핀, 12핀 단자 독자 규격을 사용하는 것과 같다. Stream은 여러 입출력 장치들 간에 데이터를 읽고 쓰는 통일된 방법이다. 입출력 장치의 종류에 상관없이, OS와 Stream 표준으로 입출력 기기간에 데이터를 주고받는다. 장치가 달라지더라도, 항상 똑같은 절차를 통해 데이..
스트림, 파일 디스크립터, 버퍼Stream을 사용하는 이유 프로그램은 일반적으로 누군가로부터 정보를 전달 하거거나, 누군가에게 정보를 전달받는 작업의 연속이다. 정보를 주고받기 위해 Computer는 수많은 입출력(I/O) 장치와 연결된다. Keyboard, Mouse, Monitor, Printer 등 각각 입출력 장치 종류나 각각의 제조사들마다 입출력 방법을 별도로 만드는 것은 불가능하다. 마치 C++ 언어가 CPU 제조사마다 다른것과 같다. 마치 애플이 8핀, 12핀 단자 독자 규격을 사용하는 것과 같다. Stream은 여러 입출력 장치들 간에 데이터를 읽고 쓰는 통일된 방법이다. 입출력 장치의 종류에 상관없이, OS와 Stream 표준으로 입출력 기기간에 데이터를 주고받는다. 장치가 달라지더라도, 항상 똑같은 절차를 통해 데이..
2023.09.06 -
예제 실행 접속, 대화 서버에서 특정 대상에게 메시지 전송 파일 전송 예제 파일 소스 코드 Server #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include #include #include namespace Ui { class MainWindow; } // [ex.02] class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; QTcpServer* m..
Qt Network 예제4 - 파일 전송예제 실행 접속, 대화 서버에서 특정 대상에게 메시지 전송 파일 전송 예제 파일 소스 코드 Server #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include #include #include namespace Ui { class MainWindow; } // [ex.02] class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; QTcpServer* m..
2023.09.06 -
예제 실행 접속, 대화 접속 종료 예제 파일 소스 코드 Server이면서, Client
Qt Network 예제3예제 실행 접속, 대화 접속 종료 예제 파일 소스 코드 Server이면서, Client
2023.09.05 -
네트워크를 배우는 단계에서 DB, Socket 의 객체를 1개만 생성되도록 강제하고 모든 GUI 객체에서 공유하는 패턴을 기반으로 로직 구현하는 연습한다. Singleton Pattern(싱글톤 패턴) : 클래스의 인스턴가 1개만 생성되도록 강제하는 방식 : 1개의 인스턴스를 모든 객체에서 공유하는 방식 1. 기본 싱글톤 1.1. 기본 개념 #include class Singleton { private: // new 를 사용한 instance 생성을 제한되도록 생성자를 private로 선언 한다. Singleton(){}; ~Singleton() {}; Singleton(const Singleton& other); // 전역 선언, 생성 순서에 기준이 없다. static Singleton instance..
Singleton Pattern(싱글톤 패턴)네트워크를 배우는 단계에서 DB, Socket 의 객체를 1개만 생성되도록 강제하고 모든 GUI 객체에서 공유하는 패턴을 기반으로 로직 구현하는 연습한다. Singleton Pattern(싱글톤 패턴) : 클래스의 인스턴가 1개만 생성되도록 강제하는 방식 : 1개의 인스턴스를 모든 객체에서 공유하는 방식 1. 기본 싱글톤 1.1. 기본 개념 #include class Singleton { private: // new 를 사용한 instance 생성을 제한되도록 생성자를 private로 선언 한다. Singleton(){}; ~Singleton() {}; Singleton(const Singleton& other); // 전역 선언, 생성 순서에 기준이 없다. static Singleton instance..
2023.09.04 -
예제 실행 접속 접속 종료 예제 파일 Serv. 소스 코드 main.cpp #include #include "widget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); // [ex.01] Widget w; w.show(); return a.exec(); } widget.h #ifndef WIDGET_H #define WIDGET_H #include #include "chatserver.h" namespace Ui { class Widget; } // [ex.02] // Widget 클래스 : QWidget 상속 class Widget : public QWidget { Q_OBJECT public: // [ex.02.1] explici..
Qt Network 예제2예제 실행 접속 접속 종료 예제 파일 Serv. 소스 코드 main.cpp #include #include "widget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); // [ex.01] Widget w; w.show(); return a.exec(); } widget.h #ifndef WIDGET_H #define WIDGET_H #include #include "chatserver.h" namespace Ui { class Widget; } // [ex.02] // Widget 클래스 : QWidget 상속 class Widget : public QWidget { Q_OBJECT public: // [ex.02.1] explici..
2023.09.01 -
예제 실행 예제 파일 (주석 있음) 예제 파일 (주석 없음) Serv. 소스 코드 main.cpp #include "widget.h" #include int main(int argc, char *argv[]) { QApplication a(argc, argv); // [01] Widget w 위젯 객체 생성 Widget w; w.setWindowTitle("TCP 서버"); w.show(); return a.exec(); } widget.cpp #include "widget.h" #include "ui_widget.h" #include #include // [02.1] Widget class 생성자 실행 Widget::Widget(QWidget *parent) : QWidget(parent), ui(ne..
Qt Network 예제1예제 실행 예제 파일 (주석 있음) 예제 파일 (주석 없음) Serv. 소스 코드 main.cpp #include "widget.h" #include int main(int argc, char *argv[]) { QApplication a(argc, argv); // [01] Widget w 위젯 객체 생성 Widget w; w.setWindowTitle("TCP 서버"); w.show(); return a.exec(); } widget.cpp #include "widget.h" #include "ui_widget.h" #include #include // [02.1] Widget class 생성자 실행 Widget::Widget(QWidget *parent) : QWidget(parent), ui(ne..
2023.08.24 -
Qt 에서 제공하는 네트워크 모듈을 사용하기 위해서는 다음과 같이추가해야 한다. qmake를 사용하는 경우 프로젝트 파일(Project_Name.pro) QT += network CMake를 사용하는 경우 CMake파일(CMakeLists.txt) find_package(Qt6 REQUIRED COMPONENTS Network ) target_link_libraries(01_NetworkCmake Qt${QT_VERSION_MAJOR}::Network) 참고 CMake의 경우, 공식 홈페이지에서 아래와 같이 가이드하지만, 오류가 발생할 수 있다. find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6:..
Qt Network Module 추가Qt 에서 제공하는 네트워크 모듈을 사용하기 위해서는 다음과 같이추가해야 한다. qmake를 사용하는 경우 프로젝트 파일(Project_Name.pro) QT += network CMake를 사용하는 경우 CMake파일(CMakeLists.txt) find_package(Qt6 REQUIRED COMPONENTS Network ) target_link_libraries(01_NetworkCmake Qt${QT_VERSION_MAJOR}::Network) 참고 CMake의 경우, 공식 홈페이지에서 아래와 같이 가이드하지만, 오류가 발생할 수 있다. find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6:..
2023.08.24 -
일반적인 C/C++ 네트워크 프로그래밍 학습은 Socket API 와 Thread를 사용합니다. Qt C++ 에서는 Socket API보다 편리한 Qt Network Modeule을 사용할 수 있고 Thread 대신 Signal 과 Slot 을 사용할 수 있기 때문에 보다 쉽게 네트워크 응용 어플리케이션을 구현할 수 있습니다. 1. Thread 이해 1.1 Program Program은 빌드가 끝난 후 저장 장치에 저장되어 있는 명령어 덩어리로, 메모리에 올라가 있지 않은 상태입니다. 스마트폰을 사용할 때, 스토어 같은 곳에서 앱을 설치하게 되는데 이것이 프로그램입니다. 프로그램을 설치하면 바로 실행이 될까요? 아닙니다. 마우스로 더블 클릭하거나 손으로 터치를 해야 실행이 되는 것이죠. 이렇게 아직 실행..
Qt Network (Signal & Slot)일반적인 C/C++ 네트워크 프로그래밍 학습은 Socket API 와 Thread를 사용합니다. Qt C++ 에서는 Socket API보다 편리한 Qt Network Modeule을 사용할 수 있고 Thread 대신 Signal 과 Slot 을 사용할 수 있기 때문에 보다 쉽게 네트워크 응용 어플리케이션을 구현할 수 있습니다. 1. Thread 이해 1.1 Program Program은 빌드가 끝난 후 저장 장치에 저장되어 있는 명령어 덩어리로, 메모리에 올라가 있지 않은 상태입니다. 스마트폰을 사용할 때, 스토어 같은 곳에서 앱을 설치하게 되는데 이것이 프로그램입니다. 프로그램을 설치하면 바로 실행이 될까요? 아닙니다. 마우스로 더블 클릭하거나 손으로 터치를 해야 실행이 되는 것이죠. 이렇게 아직 실행..
2023.08.24 -
네트워크 프로그래밍이란? 프로그램은 일반적으로 정보를 전달 하거거나, 전달받는 작업의 연속입니다. 입출력의 대상은 화면, 키보드, 파일, 데이터베이스, 다른 프로그램 등 다양합니다. 네트워크 프로그래밍은 네트워크를 대상으로 입출력 하는 프로그래밍을 의미합니다. "서로 다른 두 대 이상의 컴퓨터"가 네트워크를 통해 데이터를 주고받는 입출력 프로세스를 구현하는 것입니다. 서로 다른 컴퓨터 간에 정보를 주고받거나, 한 컴퓨터가 다른 컴퓨터에게 데이터를 전달하고, 명령을 내리는 방식으로 메일 서비스, 검색, 메신저 등의 네트워크 프로그램이 동작합니다. 소켓이란? 소켓이란 네트워크를 통해 데이터를 주고받는 방법을 통신 규약에 맞게 함수로 구현해 놓은 것입니다. 이 함수들은 소켓의 생성, 연결, 데이터의 송수신 등..
Qt Network Module네트워크 프로그래밍이란? 프로그램은 일반적으로 정보를 전달 하거거나, 전달받는 작업의 연속입니다. 입출력의 대상은 화면, 키보드, 파일, 데이터베이스, 다른 프로그램 등 다양합니다. 네트워크 프로그래밍은 네트워크를 대상으로 입출력 하는 프로그래밍을 의미합니다. "서로 다른 두 대 이상의 컴퓨터"가 네트워크를 통해 데이터를 주고받는 입출력 프로세스를 구현하는 것입니다. 서로 다른 컴퓨터 간에 정보를 주고받거나, 한 컴퓨터가 다른 컴퓨터에게 데이터를 전달하고, 명령을 내리는 방식으로 메일 서비스, 검색, 메신저 등의 네트워크 프로그램이 동작합니다. 소켓이란? 소켓이란 네트워크를 통해 데이터를 주고받는 방법을 통신 규약에 맞게 함수로 구현해 놓은 것입니다. 이 함수들은 소켓의 생성, 연결, 데이터의 송수신 등..
2023.08.24