본문 바로가기

Life/웹프로그래밍과 (KDMH WP17)

네트워크프로그래밍 요약본 / 디미고

728x90

네프 시험 문제 정리.docx
0.75MB


네프 시험 문제 정리.pdf
3.91MB

 


 

 

 

전화받는 소켓의 구현

 

-서버

소켓 생성 socket()

주소설정 bind : ip 어떤 컴퓨터 인지 찾는거, port 어떤 프로그램인지 찾을 때 (소켓을 찾을 때)

연결 요청 대기 상태 : 연결 요청이 들어왔을 떄 수락할 수 있는 상태 —> listen()

연결 요청에 대해 수락 : accept

 

 

—————-socket———————

 

연결 지향형 - tcp : 한번 연결되면 연결 유지 됨 (socket_stream)

특 ) 

중간에 소멸 ㄴ

전송 순서대로 수신

데이터 경계 존재 ㄴ —> 송신횟수랑 수신횟수랑 일치하지 않아도 됨

소켓 대 소켓 = 1 : 1

 

비연결 지향형 -udp : 연결 유지 ㄴㄴ (socket_dgram)

특 ) 

순서 상관 ㄴ 빠른전송 지향

데이터 손실 우려 ㅇ 파손 우려 ㅇ

데이터의 경계가 존재 —> 송신횟수 == 수신횟수

한번에 전송할 수 있는 데이터 크기 존재 

 

 

 

Socket(PF_INEF, 연결/비연결,  IPPROTO_TCP) <— 마지막거는 0으로 쓰면 됨 

 

 

——————————bind—————————————-

 

sockaddr_in에 뭐가 들어가는 지만 알면 됨

Sin_family —> 주소 체계 

sin_port —>

Sin_addr —> ip주소

 

INAEER_ANY 컴퓨터 ip주소 자동 할당해줌

 

 

gcc 컴파일 하라 

./서버명 포트번호

 

argv[1] —> 사용자가 입력한 문자열 중 두번쨰꺼

atoi로 문자열을 정수로 변환 

 

 

왜 강제형변환을 했는가?

  • 바인드가 부르고 있는 구조가 불편한 구조로 되어있어서 swrv_addㅂr을 만들어 강제형변환해줌, 타입이 달라서

 

memset : 0으로 초기화 후 데이터 넣기

 

 

 

 

————————listen———————-

큐만든다

 

서버가 받ㄷ을 수 있는 상태니 리슨 후에 연결함수가 들어와야 함

 

빅 : 차례대로

리틀 : 반대로

컴퓨터마다 달라서 네트워크 바이트 순서 규약 —> (빅엔디안0을 사용함

 

쇼트ㅡ는 포트 

롱은 아이피

htonl —> 로스트에서 네트로 아이피 데이터를 저장하는 방식을 변환해서 보냄 

Htons —> 호스트에서 네트로 포트 변환

ntohl —> 네트에서 호스트로

 

 

———————-accept————————-

클ㄹ언트 소켓이 생성됨

서버 | 클라이언트

소켓

바인드

리슨 | 소켓 실행

         | 커넥트 실행

accept

 

 

——————-멀티프로세스————————-

 

부모 프로세스 100번.                        아이 프로세스 101번

코드는 똑같음

fork—> 똑같은 코드가 (실행되는 시점까지 ) 아이프로세스에 생성됨

pid에 담음 ( 동시에)

pid에는 자식 아이디가 들어감(101번).                | 자식 pid에는 0이 들어감

 

결과값 뽑는거 해보기

 

좀비 프로세스 

 

 

종료 / 죽는다

종료 : exit, return

안죽고 종료만 되면 그게 좀비

 

좀비 죽이는 방법

wait / waitpid / 시그널핸들링

 

  • wait

WIFEXITED(status) 정상 종료한 자식이 있니?

WEXITSTATUS 자식 프로세스의 전달 값을 반환.

정상 종료한 자식이 있고 그 프로세스의 전달값을 반환 받으면 자식을 죽임

부모가 자식이 종료될 때 까지 기다림. —> 자식이 종료될때 까지 보모는 블로킹 현상에 빠짐

 

 

  • waitpid

블로킹현상에 빠지지 않음

 

 

  • 시그널 핸들링 

자식이 죽는 순간 시그널이 발생 os가 부모에게 알려줌

시그널 신호를 받으면 자식을 죽임

시그널 받기 전까지 딴짓을 할 수 있음.

쓰는 알아두기 *** 코드를 있어야

728x90