삽질의 현장/- ETC

[삽잡이::Socket] 소켓의 이해

shovelman 2013. 9. 15. 22:58

1. 프로토콜

- 대화에 필요한 통신 규약.

- 약속 (컴퓨터 상호간의 대화에 필요한 통신규약)

 

2. 소켓

- 네트워크상에서 서버와 클라이언트 두개의 프로그램이 특정 포트를 통해 양방향 통신이 가능하도록 만들어주는 소프트웨어 장치.

- IP adress 와 Port number가 합쳐진, 네트워크 상에서 서버 프로그램과 클라이언트 프로그램이 통신 할 수있도록 해주는 소프트웨어 장치.

 

 

<참고> Linux 기반 파일 조작하기.

 

파일 디스크립터

- 0 (표준입력 stdin)

- 1 (표준출력 stdout)

- 2 (표준에러 stderr)

 

1. 파일 열기

 

#include <sys/type.h>

#include <sys/stat.h>

#include <fcntl.h>

int open(const char *path, int flag);

 

-path : 파일 이름을 나타내는 문자열의 주소 값 전달.

-flag : 파일의 오픈 모드 정보 전달.

-O_CREAT ( 필요하면 파일을 생성)

-O_TRUNC ( 기존 데이터 전부 삭제)

-O_APPEND ( 기존 데이터 보존하고, 뒤에 이어서 저장)

-O_RDONLY ( 읽기 전용으로 파일 오픈)

-O_WRONLY ( 쓰기 전용으로 파일 오픈)

-O_RDWR ( 읽기, 쓰기 겸용으로 파일 오픈)

 

2. 파일 닫기

 

#include <unistd.h>

int close(int fd);

 

-fd : 닫고자 하는 파일 or 소켓의 파일 디스크립터 전달.

 

3. 파일에 데이터 쓰기

 

#include <unistd.h>

ssize_t write(int fd, const void *buf, size_t nbyte);

 

-fd : 데이터 전송대상을 나타내는 파일의 디스크립터 전달.

-buf : 전송할 데이터가 저장된 버퍼의 주소 값 전달.

-nbyte : 전송할 데이터의 바이트 수 전달.

 

4. 파일에 저장된 데이터 읽기

 

#include <unistd.h>

ssize_t read(int fd, void *buf, size_t nbyte);

 

-fd : 데이터 수신대상을 나타내는 파일 디스크립터 전달.

-buf : 수신한 데이터를 저장할 버퍼의 주소 값 전달.

-nbyte : 수신할 최대 파이트 수 전달.

<참조 : 열혈 TCP/IP 소켓 프로그래밍>