네트워크 프로그래밍: 호스트들이 데이터를 주고 받을 수 있도록 프로그램을 구현하는 것
소켓의 이해
1) 전화기를 산다. == 소켓을 생성(Socket 함수)
2) 전화번호를 부여받는다. == 소켓의 IP 주소 할당(Bind 함수)
3) 전화기를 케이블에 연결한다. == 소켓을 연결요청이 가능한 상태로 만듬(listen 함수)
4) 전화벨이 울리면 수화기를 든다. == 연결 요청이 들어오면 요청을 수락함(accept 함수)
클라이언트 소켓의 이해
1) 전화를 건다 == 서버에게 연결을 요청함(connect 함수)
??? 클라이언트에 전화번호를 할당하는 코드가 없다 ????
파일 조작하기
1) Low-Level == "시스템이 직접 제공해 주는"
2) 파일 디스크립터
시스템이 만들어 놓은 것을 가리키기 좋게 하기 위해 시스템이 우리들에게 건네주는 숫자
0 = 표준 입력
1 = 표준 출력
2 = 표준 에러 출력
3
4 ... 이런 식으로 차례로 넘버링이 됨
3) File 열기(open 함수)
(파일의 경로를 포함하는 이름, 열고자 하는 파일의 모드)
O_CREAT, O_TRUNC, O_APPEND, O_RDONLY, O_WRONLY, O_RDWR
4) File 닫기(close 함수)
(파일 디스크립터)
5) 데이터 쓰기(write 함수)
(파일 디스크립터, 전송할 데이터를 가지는 버퍼의 포인터, 전송할 데이터의 바이트 수)
6) 데이터 읽기(read 함수)
(파일 디스크립터, 수신할 데이터를 가지는 버퍼의 포인터, 수신할 데이터의 바이트 수)
윈속 기반의 데이터 입출력 함수
데이터를 입출력할 수 있는 기본적인 함수
send 함수 == 데이터를 전달할 때 옵션을 줄 수 있는 write 함수
(데이터를 전송할 호스트에 연결된 소켓의 핸들,
전송할 데이터를 저장하고 있는 버퍼를 가리키는 포인터,
전송할 바이트 수,
함수 호출 시, 여러가지 옵션)
recv 함수
(데이터를 수신할 호스트에 연결된 소켓의 핸들,
수신할 데이터를 저장하고 있는 버퍼를 가리키는 포인터,
수신할 바이트 수,
함수 호출 시, 여러가지 옵션)
댓글 없음:
댓글 쓰기