네트워크프로그래밍8 select 모델 select 모델이란? 블로킹 논블로킹과는 상관없다. select이전 단순 Nonblocking 방식은 수신버퍼에 데이터가 없는데 read를 하거나 송신버퍼가 꽉 찼는데 write를 한다는 문제가 발생했다 또한 그것을 체크하기 위해서 계속적으로 while문을 도는 현상이 있었는데 이러한 부분을 보완하려면 소켓 함수 호출이 성공할 시점을 미리 알게된다면 불필요한 접근을 막을 수 있다 그래서 나온 것이 select 함수이다. 위의 문제를 막기 위해서 소켓 함수 호출이 성공할 시점을 미리 알면서 불필요한 접근을 막을 수있다. select 모델은 socket set을 사용한다 socket set에 소켓 함수들을 등록해서 select를 통해 관찰을 한다 관찰을 해서 읽기 쓰기 중에서 적어도 하나의 소켓이 retu.. 2022. 4. 10. 소켓옵션 설정 소켓 옵션 설정을 통해서 커널쪽의 송수신 버퍼크기도 조절할 수 있다. 2022. 3. 30. UDP 프로그래밍 UDP 프로그래밍 udp프로그래밍은 빠르고, 안전하지않고 단점이 많은 것같지만 tcp에 비해 경계의 개념이 있어서 택배 박스처럼 패킷을 넣어서 전송하는 느낌이있다.. dummyclient 소스 #include "pch.h" #include #include #include #include #pragma comment(lib, "ws2_32.lib") int main() { WSADATA wsaData; if (::WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) return 0; // ad : Address Family (AF_INET = IPv4, AF_INET6 = IPv6) // type : TCP(SOCK_STREAM) VS UDP(SOCK_DGRAM) // protoco.. 2022. 3. 30. 소켓프로그래밍 tcp 소켓프로그래밍을 할 때 식당운영에서 손님, 안내원, 대표 이런식으로 설명을 하였다. DummyClient 부분 #include "pch.h" #include #include #include #include #pragma comment(lib, "ws2_32.lib") int main() { WSADATA wsaData; if (::WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) return 0; SOCKET clientSocket = ::socket(AF_INET, SOCK_STREAM, 0); if (clientSocket == INVALID_SOCKET) { int32 errorCode = ::WSAGetLastError(); cout 2022. 3. 30. 이전 1 2 다음