전체 글
Winsock/C++ - 4. setsockopt, getsockopt, WSAIoctl
Winsock/C++ - 4. setsockopt, getsockopt, WSAIoctl
2022.01.04[프로그래밍/소켓 프로그래밍] - Winsock - 1. WSAGetLastError, FormetMessage [프로그래밍/소켓 프로그래밍] - Winsock - 2. TCP 연결 bind,listen,accept 그리고 connect [프로그래밍/소켓 프로그래밍] - Winsock - 3. 데이터 송수신 send, recv 운영체제는 다양한 소켓 옵션등을 제공한다. winsock을 사용하는 App은 소켓 옵션을 사용해 소켓의 동작방식을 제어할 수 있다. 기본적으로는 TCP등 네트워크 프로토콜의 동작방식과 밀접한 관련이 있으나, 그렇지 않은 옵션도 있다. OS 자체의 전역적 네트워크 옵션과 정책에 따라 다르게 동작할 수 있다. 옵션 설정에는 setsockopt 함수가 사용된다. optval은 포인터를 ..
Winsock/C++ - 3. 데이터 송수신 send, recv
Winsock/C++ - 3. 데이터 송수신 send, recv
2022.01.03Winsock - 1. WSAGetLastError, FormetMessage https://so-what-93.tistory.com/42 Winsock - 2. TCP 연결 bind,listen,accept 그리고 connect https://so-what-93.tistory.com/43 연결이 되었으니 데이터 송수신을 진행해 보기로 한다. 송수신은 send와 recv를 이용한다. send와 recv는 사용법이 보이듯이 매우 간단하다. 사용법은 매우 간단하다. send가 보내는 함수라고 생각할 수 있고, recv가 받는 함수라고 생각할 수 있다. 허나 실제적인 동작은 어디까지나 송수신 커널 버퍼에 대한 복사 작업이다. send 함수의 경우, 커널의 송신 버퍼에 buf의 내용을 len 만큼 카피한다. 송..
Winsock/C++ - 2. TCP 연결 bind,listen,accept 그리고 connect
Winsock/C++ - 2. TCP 연결 bind,listen,accept 그리고 connect
2022.01.03TCP 연결을 위해서는 우선 포트를 LISTENING 상태로 만들어야 한다. 그래야 TCP 간 3way hand shake를 진행할 수 있다. 이는 netstat -a 로 확인이 가능하다. 소켓을 이용해 구현할 때에는 다음과 같이 진행한다. 매우 간단하다. 1. 소켓을 생성한다. 2. 만들어진 소켓에 주소를 매핑시킨다. 3. listen을 호출한다. 이러면 해당 주소( 해당 소켓) 은 LISTENING 상태가 된다. SOCKET ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //AF_INET -> 주소체계 //SOCK_STREAM-> TCP 전송방식 //IPPROTO_TCP-> IPv4 헤더 안에 6이 입력됨. 소켓을 만들때에는 socket 함수를..
Winsock/C++ - 1. WSAGetLastError, FormetMessage
Winsock/C++ - 1. WSAGetLastError, FormetMessage
2022.01.03WSA(Windows Socket API)에서 소켓작업 실패시 WSAGetLastError로 이를 얻어 올 수 있다. 이 에러코드는 전역변수가 아니라 TLS(Thread Local Storage) 에 저장된다. 이 함수는 각 스레드가 저마다 에러코드를 저장한다는 것. 그러니 에러가 발생한 컨텍스트를 수행중인 스레드의 에러코드가 다른 스레드에 의해 오염될 일은 걱정하지 않아도 된다. 얻어온 에러코드는 MSDN을 통해 정보를 확인한다. https://docs.microsoft.com/ko-kr/windows/win32/winsock/windows-sockets-error-codes-2 Windows 소켓 오류 코드 (Winsock2. h) - Win32 apps Windows WSAGetLastError 함..
Windows OS - C/C++ App과 Process(프로세스) 기본
Windows OS - C/C++ App과 Process(프로세스) 기본
2022.01.02Windows OS의 프로세스 Windows OS에서 프로세스는 실행중인 프로그램의 Instance라고 정의된다. 프로세스에 관련된 내용은 정말로 방대하지만, 우선은 기본적으로 간략한 내용들만을 다루기로 한다. 프로세스는 두개의 컴포넌트로 구성된다. 1. 프로세스 관리를 위해 운영체제가 사용하는 커널 오브젝트. 2. 프로세스 실행 모듈 Code, DLL Code, Thread Stack과 Heap 등을 위한 메모리 블럭. 프로세스는 절대로 자력으로 실행될 수 없다. 프로세스의 Context를 실행하는 주체는 어디까지나 Thread이다. 따라서 OS가 프로세스를 생성하면 일단은 무조건 1개의 스레드가 기본적으로 생성되는데, 이를 주 스레드(Primary Thread) 라고 부른다. 프로세스내에 Thread..