티스토리 뷰

Web & Network

소켓옵션들

pwnbit 2013. 10. 28. 12:30
반응형

소켓 옵션의 값을 변경함으로써 소켓의 수신버퍼 크기 변경 가능

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_SOCKET, SO_RCVBUF, &rcvBufferSize, &sockOptSize) <0)

DieWithError("");


..... 생략됨


-----------------------------------



신호(Signals)

프로그램들에게 어떤 사건들이 발생했다는 것을 알리는 체계를 제공

예 : 사용자가 인터럽트 문자(리눅스의 Ctrl+C)를 입력했을 때, 타이머 만료


신호가 수행중인 프로그램에 전달될 때 다음 네가지 중 하나가 발생

1. 신호가 무시

2. 프로그램이 운영체제에 의해 강제저긍로 종료

3. 프로그램에 의해 지정된 신호처리 루틴이 수행

4. 신호가 블록 : 프로그램이 전달을 허용하는 조치를 취할 떄까지 어떤 효과를 내는 것을 막음


--- 신호 처리 프로그램 ---

// sigaction.c


#include <stdio.h>

#include <signal.h>

#include <unistd.h>

#include <stdlib.h>


void DieWithError(char *errorMessage);

void InterruptSignalHandler(int signalType);    // 신호에 대한 처리를 해줄 함수


int main(int argc, char *argv[])

{

struct sigaction handler;    //신호 처리를 위한 구조체 핸들러 선언


handler.sa_handler = InterruptSignalHandler;    //신호 구조체 선언

if(sigfillset(&handler.sa_mask) <0)    //신호를 어떻게 처리할 지 선언(마스크 = 블럭)

DieWithError("sigfillset() failed");

handler.sa_flags = 0;


if (sigaction(SIGINT, &handler, 0) <0)

DIeWithError("sigaction() failed");


for(;;)

pause();


exit(0);

}


void InterruptSignalHandler(int signalType)

{

printf("Interrupt Received. Exiting program.\n");

exit(1);

}

/* 위 함수와 교체 부분

void InterruptSignalHandler(int ignored)

{

printf("Interrupt Received.\n");

sleep(3);

}

*/

※ 시스템 상에서 인터럽트를 2번만 받기 떄문에 Ctrl+C를 3번 연속 눌러도 Interrupt Received 메시지는 2번만 출력됨.







반응형

'Web & Network' 카테고리의 다른 글

자바스크립트 자동 새로고침  (984) 2015.09.29
멀티태스킹(Multi tasking)  (1366) 2013.11.11
신호(Signals)  (1329) 2013.11.04
UDPEchoServer  (1107) 2013.10.30
tcp/ip 소켓 프로그래밍 함수 소개  (1097) 2013.09.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함
300x250