C++ Qt/Network
Stream (2) - 표준 입출력 함수
Stream (2) - 표준 입출력 함수
2024.09.130. 사전 지식더보기 리눅스 표준 입출력 스트림표준 스트림 : stdin, stdout, stderr 별도의 스트림 생성 없이 바로 사용 가능표준 입출력 함수 : C, C++ 등에서 제공하는 함수로, 함수 내부에 stdin, stdout 표준 스트림과 버퍼를 사용하도록 구현파일, 소켓, DB 사용 : 개발자가 명시적으로 스트림을 생성하여 사용 get 함수 실행 결과가 변수, 반환값 이면 get, scan, input 함수명 사용input 의미는 소스코드로 가져오는 것이다.키보드, 텍스트 파일(원본) → 함수 반환값, 변수(목적지) 등으로 가져올 때원본에서 데이터를 가져오는 이미지 put함수 실행 결과가 변수, 반환값 이 아니라면 put, print, output 함수명 사용output 의미는 소스코드 ..
Stream (1) - Buffer
Stream (1) - Buffer
2024.09.03Stream 1. Stream을 사용하는 이유 프로그램은 정보를 전달 하거거나, 정보를 전달받는 작업의 연속이다.정보를 주고받기 위해 Computer는 수많은 입출력(I/O) 장치와 연결된다. Keyboard, Mouse, Monitor, Printer 등 모든 입출력 장치 마다 입출력 방법을 별도로 만드는 것은 불가능하다. 이것은 마치 C++ 언어가 CPU 제조사마다 다른거나, 애플이 C타입을 쓰지 않고 8핀, 12핀 독자 규격을 사용했던 것과 같다. Stream은 여러 입출력 장치들 간에 데이터를 읽고 쓰는 통일된 방법이다.입출력 장치의 종류에 상관없이, 운영체제는 Stream 표준으로 입출력 기기간에 데이터를 주고받는다.장치가 달라지더라도, 항상 똑같은 절차를 통해 데이터를 읽고 쓰는 방법을 ..
Qt Network 예제4 - 파일 전송
Qt Network 예제4 - 파일 전송
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 예제3
Qt Network 예제3
2023.09.05예제 실행 접속, 대화 접속 종료 예제 파일 소스 코드 Server이면서, Client
Singleton Pattern(싱글톤 패턴)
Singleton Pattern(싱글톤 패턴)
2023.09.04네트워크를 배우는 단계에서 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..
Qt Network 예제2
Qt Network 예제2
2023.09.01예제 실행 접속 접속 종료 예제 파일 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 예제1
Qt Network 예제1
2023.08.24예제 실행 예제 파일 (주석 있음) 예제 파일 (주석 없음) 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 Module 추가
Qt Network Module 추가
2023.08.24Qt 에서 제공하는 네트워크 모듈을 사용하기 위해서는 다음과 같이추가해야 한다. 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 (Signal & Slot)
Qt Network (Signal & Slot)
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 Module
Qt Network Module
2023.08.24네트워크 프로그래밍이란? 프로그램은 일반적으로 정보를 전달 하거거나, 전달받는 작업의 연속입니다. 입출력의 대상은 화면, 키보드, 파일, 데이터베이스, 다른 프로그램 등 다양합니다. 네트워크 프로그래밍은 네트워크를 대상으로 입출력 하는 프로그래밍을 의미합니다. "서로 다른 두 대 이상의 컴퓨터"가 네트워크를 통해 데이터를 주고받는 입출력 프로세스를 구현하는 것입니다. 서로 다른 컴퓨터 간에 정보를 주고받거나, 한 컴퓨터가 다른 컴퓨터에게 데이터를 전달하고, 명령을 내리는 방식으로 메일 서비스, 검색, 메신저 등의 네트워크 프로그램이 동작합니다. 소켓이란? 소켓이란 네트워크를 통해 데이터를 주고받는 방법을 통신 규약에 맞게 함수로 구현해 놓은 것입니다. 이 함수들은 소켓의 생성, 연결, 데이터의 송수신 등..