object : 사물, 물체
oriented : =based 기반
객체 지향(OOP)의 4단계 방법론
Definition : class A{}
Declaration : A a;
Instanciation : a = new A();
Invocation : a.f();
OOP <=> function oriented programming
접속 기반 프로토콜(Connection Oriented Protocol)
SOCKET PASCAL FAR socket(int af, int type, int protocol);
참고주소 : http://msdn.microsoft.com/en-us/library/ms740506(VS.85).aspx
특정 전송 서비스 제공자로 바인드 될 소켓을 생성한다.
리턴 : 성공시 소켓의 핸들. 실패시 INVALID_SOCKET.
af : address family를 정한다.
- AF_INET(IPv4), AF_IPX, AF_APPLETALK, AF_NETBIOS, AF_INET6(IPv6), AF_IRDA, AF_BTH
type : 새로운 소켓이 어떤 형태인지 정한다.
- SOCK_STREAM : OOB data 전송 메카니즘을 가진 순서화된 신뢰성 있는 양방향, 접속 기반 바이트 스트림을 제공한다.
- SOCK_DGRAM : 고정된 최대 크기의 신뢰성 없고 접속하지 않는 버퍼인 데이터그램을 제공한다.
- SOCK_RAW : Layer 3 프로그래밍을 하고 싶을 때
예시) ping(컴퓨터가 살았나 죽었나, round-trip), tracert
protocol : 사용될 프로토콜
- IPPROTO_TCP, IPPROTO_UDP
well-known port(0~1024) : 사람들이 자주 사용하는 포트. 21: ftp, 23: telnet, 25 : SMTP, 80 : web
Socket Address 구조체
참고주소 : http://msdn.microsoft.com/en-us/library/aa252969(VS.60).aspx
struct sockaddr_in{
short sin_family;
unsigned short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
sin_family : address family ( AF_INET이어야 한다. )
sin_port : 16비트 포트 번호. htons계열의 함수가 필요하다.
sin_addr : IP 주소. inet_addr함수나 htonl계열의 함수가 필요하다.
sin_zero : 사용되지 않음.
int pascal FAR connect(SOCKET s, struct sockaddr FAR *addr, int namelen);
참고주소 : http://msdn.microsoft.com/en-us/library/ms737550(VS.85).aspx
소켓 핸들과 소켓 구조체를 연관시키고 시스템에게 묶어달라고(bind) 요청한다.
소켓과 지역(현재 컴퓨터) 주소를 연관시킨다.
리턴 : 성공시 0. 실패시 SOCKET_ERROR. 더 자세한 오류코드는 WSAGetLastError를 참고.
s : bind되지 않은 소켓을 나타내는 descriptor
name : sockaddr 구조체로부터 소켓을 지정할 주소
namelen : 바이트 단위. name 전달인자 값의 길이
int PASCAL FAR listen(SOCKET s, int backlog);
참고주소 : http://msdn.microsoft.com/en-us/library/ms739168(VS.85).aspx
포트를 감시모드로 바꾼다.
들어오는 접속에 대해 듣고 있는 상태의 소켓으로 만든다.
리턴 : 성공시 0, 실패시 SOCKET_ERROR
s : 접속되지 않고 bind된 소켓을 나타내는 descriptor
backlog
- 기라디는 접속 큐의 최대 길이. (로스터에 올라간 사람 수. 최소 1이상)
- SOMAXCONN이면 최대로 합리적인 값으로 backlog를 설정.
SOCKET PASCAL FAR accept(SOCKET s, struct sockaddr FAR *addr, int FAR *addrlen);
참고주소 : http://msdn.microsoft.com/en-us/library/ms737526(VS.85).aspx
클라이언트가 올 때까지 blocking되었다가 클라이언트가 접속하면 요구를 받아준다.
소켓으로 들어오는 시도를 한 접속을 허가한다.
s : listen 함수에 의해 listen 상태인 소켓을 나타내는 descriptor
addr : 접속한 개체의 주소를 받는 버퍼의 포인터. 접속 peer 프로세스(클라이언트)의 주소를 리턴한다.
addrlen : addr 전달인자를 가리키는 구조체의 길이를 포함한다.
'컴퓨터 공부 > 네트워크 프로그래밍' 카테고리의 다른 글
[6월 1일 3교시] 소켓 프로그래밍 이론 (0) | 2009.06.01 |
---|---|
[6월 1일 2교시] 소켓 프로그래밍 이론 (0) | 2009.06.01 |
[5월 30일 3교시] OSI 7 계층(소켓 프로그래밍) (0) | 2009.05.30 |
[5월 30일 1,2교시] OSI 7 계층(전송 계층 2) (0) | 2009.05.30 |
[5월 29일 3교시] OSI 7 계층(전송 계층 1) (0) | 2009.05.29 |