본문 바로가기

network

신호(Signals) UDPEchoClient에서 클라이언트가 Sendto() 후 서버의 Sendto()를 기다리는 동안 block되지 않도록 하는 방법1) non-blocking socket - 서버측2) asynchronous I/O - 서버측3) Timeout - 클라이언트측 1)Process에서 InterruptSignalHandler 실행 중 사용자가 Ctrl+C와 같은 인터럽트 입력 시 System에서 SIGINT가 들어오게되고 InterruptSignalHandler() 내부에서 printf("Interrupt Received"); 와 같은 문자열 출력 후 for(;;)문 내부의 pause가 실행되어 프로그램이 정지된다. 2) 서버에서 bind() 이후 대기하는 동안 다른 작업(3초마다 . 출력)을 하게 된다. .. 더보기
UDPEchoServer #include #include #include #include #include #include #define ECHOMAX 255 void DieWithError(char *errorMessage); int main(int argc, char *argv[]){int sock;struct sockaddr_in echoServAddr;struct sockaddr_in echoClntAddr;unsigned int cliAddrLen;char echoBuffer[ECHOMAX];unsigned short echoServPort;int recvMsgSize; if (argc != 2){fprintf(stderr,"Usage: %s \n", argv[0]);exit(1);}echoServPort = atoi(a.. 더보기
소켓옵션들 소켓 옵션의 값을 변경함으로써 소켓의 수신버퍼 크기 변경 가능 getsockopt() : 소켓의 옵션 값을 참조 setsockopt() : 소켓의 옵션 값을 지정 int getsockopt(int socket, int level, int optName, void *optVal, Unsigned int * optLen) int setsockopt(int socket, int level, int optName, const void *optVal, Unsigned int * optLen) --- 소켓 버퍼크기 지정 프로그램 --- int rcvBufferSize; int sockOptSize; sockOptSize = sizeof(rcvBufferSize); if(getsockopt (sock, SOL_SOC.. 더보기