네트워크는 명령을 전달하기위한 수단으로 만들어지게되엇다.
VPN : 은행에서 암호화 와 복호화 하는 장치
소켓을 생성하는 절차는 서버와 클라이언트 차이가 있다.
소켓 API 에서 제공하는 함수로 서버와 클라이언트를 연결할 수 있다.
소켓은 저수준 입 출력에 다 마춰져 있으므로 저수준을 알고 있으면 컨트롤이 가능하다.
소켓 번호에 대고 쓰면 하드 드라이버에 쓰게되고
네트워크에 쓰면 패킷으로 전송이 된다.
socket man page 을 열어보자.
반환형 이 int 임을 알수가 있다. 그리고
인자도 다 int 형이다. 숫자를 넣어주면된다.
int domain 에는 IP를 선택 하고
int Type 에는 TCP 와 UDP 등을 선택하고
int Protocol 에는 Type 에 따라 선택한다.
그럼 인자 값을 찾기 위해서 헤더 파일을 열어보자.
헤더 파일을 열기 위해서 socket.h 를 찾아가면 <bits/socket.h> 가 보일것이다.
이 헤더 파일을 열면 인자 값들이 나열되어 있다.
밑으로 내려가면 다른 인자 값들도 나열되어 있는 모습을 볼수가 있을 것이다.
LOCAL 이 라는 것이 보일것이다. LOCAL 은 현재 컴퓨터를 말하기도 하며 파이프로도 사용이 가능하다.
LOCAL 을 사용하여 컴파일시 에 파일 이 생성되는데 파일속성이 S 가 붙어 있다.
여기서 S 는 소켓을 말한다.
소켓 파일을 사용하여 통신을 할경우 랜선역활을 하게되는데 파일로 통신을 하면 랜카드를 거치지 않고 통신을 할수 있다.
잘사용되는 것이 1번과 2번 이다. 3번도 사용이 되는데
3번인 RAW 는 소켓은 만들어지지만 하위 계층없이 만들어진다. 그러므로 RAW 를 사용하면 하위 계층을 다 만들어주어야한다.
마지막 인자를 찾기 위해서
grep 명령을 사용하면 어디에 위치해있는지 알수 가 있다.
[ greap –r IPPROTO_TCP * ] 인데
여기서 –r 은 하위 디렉토리를 말한다. * 는 모든 파일을 말한다.
linux/in.h 에 들어있는 protocol 이다. 여기서 인자를 골라서 3번째 인자에 넣어주면된다.
자이제 소켓을 생성하였으니
IP 와 TCP 를 설정 해주어야한다.
설정해주기위해서 구조체 를 선언한다.
[netinet/in.h]
구조체를 선언하고 사용할려고 보니 __SOCKADDR_COMMON(sin_) 이라는 것이 있다.
이것을 찾아보면
[bits/sockaddr.h]
위 그림처럼 나와있다.
역슬래시는 밑줄과 윗줄이 한줄이라는 뜻이다.
sa_prefix 인자 자리에 sin_ 가 들어오게되면 sa_prefix 에 sin_ 가 써지고 ## 에 의해서 family 가 자동으로 붙게 된다.
앞단과 뒤단을 붙이기 위해서 ## 을 사용한다.
[헤더 파일과 전처리 파일 비교]
그러므로 __SOCKADDR_COMMON 매크로함수는 변수 이름에 family 가 자동으로 붙게 만들어 놓은 매크로 함수 이다.
이제 주소를 변환하여 넣기 위해서 Inet_pton 을 찾아보자.
인자가 총 3가지가 들어간다.
두번째 인자 문자열을 첫번째 인자로 변환 시켜서 세번째 인자에 복사 시켜주는 함수이다.
inet_pton 에는 리턴되는 종류가 3가지이다.
1. 0 보다 작을경우
2. 0 과 같을 경우
3. 0 보다 클 경우
[소스]
[ 결과 ]
inet_pton 함수를 사용하여 st_Addr.sin_addr.s_addr 에 127.0.0.1 을 넣은 것을
inet_ntoa 함수를 사용하여 출력한 모습이다.
'코스웨어 > 11년 내장형하드웨어' 카테고리의 다른 글
[내장형]이성재_10월25일 일일보고서 (12) | 2011.10.25 |
---|---|
[내장형]김수만_10월 24일 (6) | 2011.10.25 |
[내장형]이상만_10월 20일(bitmap project / socket 2Way handshake) (10) | 2011.10.21 |
[내장형]윤병도_10월19일(TCP 서버 클라이언트 프로그래밍) (5) | 2011.10.19 |
[내장형]박춘우_2011년 10월 17일 월요일 DailyReport (9) | 2011.10.17 |
[내장형]한원우_10월14일 실습보고서 (10) | 2011.10.16 |
수업자료 RFID / Linux Serial 리눅스 시리얼 통신 (2) | 2011.10.14 |
[내장형]이동현 10월 13일 일일보고서 (17) | 2011.10.13 |