티스토리 툴바

블로그 이미지
재스퍼

카테고리

분류 전체보기 (42)
게임 (1)
잡소리 (3)
프로그래밍 지식 (4)
작업 (4)
Effective C++ (14)
Accelerated C++ (5)
기초 C++ (5)
Network (6)
서버 (0)
DB (0)
NDC (0)
Total823
Today0
Yesterday0

달력

« » 2012.05
    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    

공지사항

태그목록

fork()명령어로 복사본 프로세스 생성. 부모 프로세스의 모든 메모리 공간을 그대로 복사 후 그 후부터는 따로 실행. 메모리 공유 안함.
좀비 프로세스: 일안하고 그냥 있는 프로세스
자식 프로세스가 exit, return으로 값 반환하면 그 값이 커널로 가는 데 그값을 부모 프로세스에 전달 후 자식 프로세스가 소멸됨. 부모가 그 리턴값 안읽으면 자식이 좀비됨. wait(), waitpid() 사용으로 해결. 시그널 핸들링으로 해결.

시그널 핸들링
void (*signal( int signum, void (*func)(int)))(int)
int sigaction( int signum, const struct sigaction *act, struct sigaction *oldact) //이게 더좋음

시그널 예약
unsigned int alarm(unsigned int second)
임의의 시간이 지나서 시그널 발생.

멀티 프로세스를 이용해서 입출력 루틴 분할 가능.

프로세스간 통신을 위해서 파이프 생성해야함. 파이프는 프로세스에 독립적.
int pipe( int fd[2])
데이터를 프로세스들이 주고 받을때는 파이프 두개 생성하는 것이 일반적임.

Posted by 재스퍼

소켓 옵션

Network / 2011/05/19 18:01
현재 소켓 설정 상태 정보를 가져오는 함수
getsockopt()

옵션을 변경하는 함수
setsockopt()
 
소켓 타입 정보 얻어오는 옵션: SO_TYPE
소켓 생성시 제공되는 출력 버퍼의 크기와 관련: SO_SNDBUF
소켓 생성시 제공되는 입력 버퍼의 크기와 관련: SO_RCVBUF
옵션 바꿔도 입출력 버퍼 크기는 맘대로 맞출수 없음. 대충 비슷하게만 맞춰짐. 
TIME-WAIT: four-way handshaking과정이 끝난 상태에서 소켓이 바로 소멸되는 것이 아니라, TIME-WAIT상태로 들어감.
따라서 서버 종료후 바로 서버 실행하면 bind함수 호출에서 에러. 연결된 클라가 없다면 에러 발생하지 않음.
SO_REUSEADDR: TIME-WAIT상태에 있는 소켓에 할당되어 있는 IP주소와 PORT를 새로 시작하는 소켓에 할당 가능.(옵션 1로하면)
 
Posted by 재스퍼

도메인

Network / 2011/05/19 17:29
도메인 이름을 IP주소로 변환하는 작업을 담당하는 서버: DNS서버
자기가 모르면 다른 DNS서버에게 물어봄.
IP주소를 소스코드에 넣으면 IP바뀔때마다 수정해야 됨. 따라서 도메인 넣는게 나음.
도메인 이름을 이용해서 IP주소 알아내는 함수: struct hostent* gethostbyname(const char* name); 
IP주소 이용해서 도메인 이름 알아내는 함수: struct hostent* gethostbyaddr(const char* addr, int len, int type);

Posted by 재스퍼

최근에 달린 댓글

최근에 받은 트랙백

글 보관함