2025/06 23

MySQL 기본 사용법

MySQL 데이터베이스 스키마와 테이블 세팅기본 PORT번호는 3306으로 설정되어 있음 (MySQL Defult)데이터베이스는 해킹 사고의 근간.. 보통 해킹당했다! = DB 털렷다!adress가 데이터베이스 스키마. 그 아래 하위로 Table을 만들 수 있다PK = PreimaryKey 즉 중복 불가능키 그리고 나머지 약자도 오른쪽 아래 보면 표기되어 있다테이블에 데이터를 삽입하주고 Apply키를 누르면 들어감 book 테이블을 만들어서 userInfo와 연결해줄건데 아래와 같이 구성adressbook의 userifo의 name과 author을 연결해줬다는 뜻주의 사항 대소문자 구분x, 데이터 문자열은 구분o기본 코드사용사용법 직관적이고 어렵지도 않다번개모양 누르면 적은 코드가 실행됨INSERT UP..

입출력모델 - IOCP (Completion Port)

IOCP (I / O Completion Port)가 왜 최종일까?이전 모델들의 단점을 모두 해결했기 때문에이벤트 모델의 단점 : 스레드와 클라이언트가 1:1로 묶여 클라이언트 수 만큼 스레드가 필요했다콜백 모델의 단점 : I/O를 시작한 스레드에서만 콜백이 실행되는 '스레드 종속성' 문제가 있었다 IOCP는 적은 수의 스레드로 많은 클라이언트의 I/O를 효율적으로 처리하며, I/O 완료 작업을 특정 스레드에 종속시키지 않고 노는 스레드에게 공평하게 분배한다.IOCP의 3대 핵삼 구성요소세가지 핵심API함수로 동작한다CreateIoCompletionPortIOCP의 핵심인 Completion Port 핸들을 생성하는 함수모든 I/O 완료 통지는 이 포트를 통해 이루어진다.또한 클라이언트 소켓이 생길 때마..

입출력 모델 Overlapped - IO (콜백기반)

비동기 데이터 수신( Overlappend I/O )이전 포스팅에서 다룬 Event기반 IO 모델은 클라이언트마다 스레드와 이벤트 핸들을 할당하여 I/O 완료를 감지하는 방식이였다이번엔 이벤트 핸들을 직접 관리하는 대신 I/O 작업이 완료되었을 때 우리가 지정한 함수가 자동으로 호출되게 만드는 콜백 기반 처리 최종적으로 왜 IOCP를 사용하는지 이해하기에 도움이 되는 개념 Alertable State와 APC콜백 모델을 이해하려면 두 가지 중요한 개념을 먼저 알면 좋다APC(Asynchronous Procedure Call, 비동기 프로시저 호출)쉽게 말해 나중에 특정 스레드에서 실행될 함수I/O 작업이 완료되면 OS는 "작업 끝났어" 라고 말하는 대신 우리가 등록한 콜백함수를 APC큐라는 작업 공간에 ..

입출력 모델 - Overlapped I/O (이벤트기반)

MS공식 문서https://learn.microsoft.com/ko-kr/windows/win32/api/winsock2/nf-winsock2-wsasend WSASend 함수(winsock2.h) - Win32 apps연결된 소켓에 데이터를 보냅니다. (WSASend)learn.microsoft.comhttps://learn.microsoft.com/ko-kr/windows/win32/api/winsock2/nf-winsock2-wsarecv WSARecv 함수(winsock2.h) - Win32 apps연결된 소켓 또는 바인딩된 연결 없는 소켓에서 데이터를 받습니다. (WSARecv)learn.microsoft.com 용어정리 Overlapped I/O (이벤트 기반)IOCP로 나아가기 위한 발판비동..

입출력 모델 - WSAEventSelect

관련 함수 공식 문서 링크https://learn.microsoft.com/ko-kr/windows/win32/api/winsock2/nf-winsock2-wsaeventselect WSAEventSelect 함수(winsock2.h) - Win32 appsWSAEventSelect 함수는 지정된 FD_XXX 네트워크 이벤트 집합과 연결할 이벤트 개체를 지정합니다.learn.microsoft.comhttps://learn.microsoft.com/ko-kr/windows/win32/api/winsock2/nf-winsock2-wsawaitformultipleevents WSAWaitForMultipleEvents 함수(winsock2.h) - Win32 apps지정된 이벤트 개체 중 하나 또는 전부가 신..

입출력모델 - Select 모델

Select I/O 모델하나의 스레드에서 여래가의 소켓을 동시에 관리하기 위한 기술 Select 모델의 핵심 개념 "관찰"서버는 수많은 클라이언트와 통신해야 한다. 이때 어떤 클라이언트가 데이터를 보냈는지, 또는 데이터를 보내도 되는 상태인지 알수가 없다Blocking 소켓의 문제점: recv() 함수를 호출했을 때 클라이언트가 데이터를 보내지 않았다면, 데이터가 올 때까지 프로그램 전체가 멈춘다.. 한 클라이언트를 기다리느라 모든 클라를 처리할수 없게 됨Non-Blocking 소켓의 문제점: 무작정 recv()를 계속 호출하며 데이터가 왔는지 확인하면 CPU 자원을 많이 낭비하게됨..Select 모델은 이러한 문제를 해결우리가 감시하고 싶은 소켓들의 목록(예: "데이터를 읽을 소켓들", "데이터를 쓸..

논 블로킹 소켓

블로킹 소켓입출력 함수 호출이 완료될 때 까지 기다리지 않고 즉시 리턴되는 방식의 소켓으로, 효율적인 동시성 처리를 위해 많이 사용됨1. 블로킹 소켓 vs 논블로킹 소켓구분블로킹논블로킹함수 호출 결과완료될 때까지 대기즉시 리턴 (완료되지 않음 가능성 있음)예: accept()클라이언트가 접속할 때까지 대기접속 없으면 에러(WSAEWOULDBLOCK)예: recv()데이터 수신까지 대기수신 버퍼 비어있으면 에러(WSAEWOULDBLOCK)예: send()버퍼 여유 생길 때까지 대기버퍼 가득 차면 에러(WSAEWOULDBLOCK)장점구현 간단대량 연결, 고성능 서버 구현에 적합단점1:1 쓰레드 대응 구조 → 비효율구현 복잡, 에러 처리 필요 논 블로킹 소켓 설정 방법u_long on = 1;::ioctlso..

소켓 옵션

소켓 옵션 제어하기소켓 프로그래밍에서 setsockopt 및 getsockopt을 통해 소켓의 동작을 제어할 수 있다.소켓 생성WSAStartup(MAKEWORD(2, 2), &wsaData); // Winsock 초기화SOCKET serverSocket = ::socket(AF_INET, SOCK_STREAM, 0); // TCP 소켓 생성 AF_INET : IPv4 주소 체계SOCK_STREAM : TCP SOCKET : Windows 전용 소켓 핸들 타입소켓 옵션 정리 (setsockopt, getsockopt)1. SO_KEEPALIVE (TCP 전용)역할: 연결이 살아 있는지 주기적으로 확인 (ping 신호)사용 상황: TCP 연결에서 상대방이 비정상 종료됐는지 감지bool enable = ..

TCP통신 코드 분석

핵심 흐름 분석1. 서버// ... (생략) ...while (true){ // 1. accept()에서 블로킹 발생 SOCKET clientSocket = ::accept(listenSocket, (SOCKADDR*)&clientAddr, &addrLen); // ... (생략) ... // 손님 입장 cout 다음 클라이언트를 받으러 감 } cout 1. SOCKET clientSocket = ::accept 에서의 블로킹 클라이언트가 접속을 요청할 때 까지 무한정 기다린다. 이 시간동안 서버 프로그램은 다음 코드로 넘어가지 않고 완전히 멈춰있고, 클라이언트가 접속해야 accept()가 리턴되고 다음 코드를 실행하게 된다2. int32 re..

소켓 프로그래밍

Window에서 소켓통신 시작하기 (공통 준비)#include #include #include #pragma comment(lib, "ws2_32.lib")//윈도우 소켓 통신 필수헤더필수 헤더와 lib를 클라이언트와 서버 양쪽에 추가해준다필요한 매개변수는 공식 사이트에 가면 문서를 확인할 수 있다. 윈속 시작 WSAData wsaData; if (::WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) return 0; ......일련의 과정들....... 윈속 종료 ::WSACleanup();https://learn.microsoft.com/ko-kr/windows/win32/api/winsock2/nf-winsock2-so..