-
server / client 데이터송수신과정Network 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) : 서버와의 연결을 종료한다.
'Network' 카테고리의 다른 글
BGP up/down (0) 2014.10.30 BGP 간의 주고받는 메시지 (0) 2014.10.19 ARQ(Automatic Repeat reQuest) (0) 2014.01.01 encapsulation (0) 2013.12.21 pcap Library (0) 2013.06.14