Network

server / client 데이터송수신과정

jianna6 2013. 6. 14. 23:36

 출처 : http://blog.naver.com/shw20319/20149329949

 

 

 

 

 

server측


[연결 준비 단계]

1. 소켓 생성(socket) : 네트워크 통신을 위해 소켓을 생성한다.

s = socket(PF_INET, SOCKDGRM, 0);




2. 연결할 주소 준비 : 클라이언트로부터 서비스 요처을 받아들일 서버의 프로토콜 주소(IP 주소와 포트 번호를 결정해서 구조체 sockaddr_in 자료형 변수에 저장한다.

memset(&s_addr, 0, sizeof(s_addr));

s_addr.sin_addr.s_addr = inet_addr(INADDR_ANY);

s_addr.sin_family = AF_INET;

s_addr.sin_port = htons(7000);



3. 주소에 연결(bind) : 소켓을 접속저민 프로토콜 주소에 연결한다.

bind( s, (struct sockaddr *)&s_addr, sizeof(s_addr) );

 

[서비스 처리 단계]

1. 자료의 송수신(recvfrom/sendto) : 클라이언트와 자료를 송수신하며 클라이언트에 서비스를 제공한다.

UDP는 메시지 경계를 보존

- 한 번 호출한 recvform()은 한 번 sendto()한 자료 반환 / sendto()와 recvfrom() 호출 회수가 일치해야한다.

- 여러 클라이언트로부터 동시에 자료가 도착 / 발신자가 구분되도록 메시지 경계 유지 커널 버퍼에 복사하지 않음

2. 연결 종료(close/shutdown) : 클라이언트와의 연결을 종료한다.

UDP에서도 close 함수와 shutdown 함수를 사용

 

 

 

client

[연결 준비 단계]

1. 소켓 생성(socket) : 네트워크 통신을 위해 소켓을 생성한다.

2. 연결할 주소 준비 : 서비스를 요청할 서버의 프로토콜 주소(IP 주소와 포트 번호)를 구조체 변수에 저장한다.

 

[서비스 처리 단계]

1. 자료의 송수신(recvfrom/sendto) : 서비스를 제공받기 위해 서버로 자료를 전송하거나 전송받는다.


2. 연결 종료(close/shutdown) : 서버와의 연결을 종료한다.