본문 바로가기

Network

(5)
멀티태스킹(Multi tasking) 11. 11 월 컴퓨터네트워크2 멀티태스킹 서버의 행동 중 socket(), bind(), listen()의 과정을 CreateTCPServerSocket()이란 함수로 묶고, accept()를 AcceptTCPConnection()으로, receive(), send()를 HandlingTCPClient()라는 함수로 묶어서 사용. # 클라이언트당 프로세스멀티태스킹을 위해 fork()를 이용하여 자식 프로세스를 생성한다. 이 자식 프로세스는 receive(), send()의 역할을 수행하며 Client는 자식프로세스에게 send()하게 된다. 자식 프로세스가 종료되어도 이 프로세스가 자동으로 사라지는 것이 아니라 waitpid() 호출을 통해 좀비프로세스를 수확해야 자원이 회수된다. # 클라이언트당 쓰레..
신호(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..
tcp/ip 소켓 프로그래밍 함수 소개 2.1 생성과 해지 socket() tcp나 udp 통신을 하기 위해 사용 파라미터 int socket(int protocolFamliy, int type, int protocol) int protocolFamliy 소켓의 패밀리 결정 인터넷 프로토콜 패밀리 프로토콜을 사용하는 소켓 : PF_INET int type 소켓의 형태를 지정(데이터 전송의 의미를 결정) SOCK_STREAM : TCP SOCK_DGRAM : UDP int protocol 특정 종단간 프로토콜을 나타냄 tcp 스트림 소켓 : IPPROTO_TCP udp 데이터그램 소켓 : IPPROTO_UDP 0으로 설정할 경우 : 지정된 프로토콜 패밀리 및 형태를 위한 디폴트 종단간 프로토콜 사용 반환값 : 음의 값이 아니면 성공, -1은 실..