서버 소켓 구현의 이해



Telephone

전화기 구입


전화번호 할당


케이블에 연결


수화기를 든다



<-------------------->


<-------------------->


<-------------------->


<-------------------->

 Server Socket


소켓 생성


IP주소 할당


연결 요청 대기 상태


연결 수락



서버를 전화받는 상황에 비유를 해보면 소켓을 전화기로 볼 수 있다.


일단 전화를 하려면 전화기가 필요하듯이 서버에서 데이터를 주고 받기위해서는 데이터를 주고받을 매개체인 소켓이 일단 필요하다. 


전화기에 전화번호가 있듯이 당연하게 IP주소가 할당되어져야하고 연결 요청 대기 상태로 되있게끔 해야하는데 말하자면 전화기에 케이블을 연결하는 과정이라고 생각하면 쉽다.


그뒤로 전화가 왔을때 받으면 된다.

서버는 클라이언트가 연결을 요청했을때 이를 수락하면 된다.


일반적인 서버프로그래밍은 이러한 큰 틀을 가지고 있다.



일단 소켓통신을 위한 함수들은 간단하게 살펴보자.


소켓 생성


#include<sys/types.h>

#include<sys/socket.h>


int socket(int domain, int type, int protocol)


IP 주소, Port 정보


#include<sys/socket.h>


int bind(int socket, struct sockaddr *myaddr, int addrlen)


연결 요청 대기 상태 진입


#include<sys/socket.h>


int listen(int sockfd, int backlog)


연결 요청 수락 


#include<sys/socket.h>


int accept(int sockfd, struct sockaddr *addr, int *addrlen)




클라이언트 소켓 구현의 이해


전화를 거는 사람도 전화기와 전화번호가 필요한 것 처럼 

서버 뿐만아니라 클라이어트도 소켓이 필요하다.


소켓 생성


위와 동일


연결요청


#include<sys/socket.h>


int connet(int socket, struct sockaddr *serv_addr, int addrlen)












+ Recent posts