-
뇌자극 TCP/IP 4강 요약C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 5. 19. 22:49
네트워크 프로그램의 흐름 이해하기
1. 기존의 망에 노드를 추가한다.
=> 인터넷 망에 접속하기 위해 (소켓)
2. 그 노드를 링크에 연결하기
=> Socket (IP 주소 + Port 번호)
3. 통신 상대를 찾아가기
1. 송신측
소켓 생성 -> 포트 부여 -> 상대편 IP/Port 주소로 연결 -> 통신 -> 종료
2. 수신측
소켓 생성 -> 포트 부여 -> 상대편 연결 기다리기 -> 통신 -> 종료
// 인터넷과 연결하기 위한 접점 소켓을 생성한다.#include <sys/types.h>#include <sys/socket.h>int socket(int domain, int type, int protocol);//domain : 소켓의 사용 영역을 정의한다.//type : 소켓 유형을 정의한다.//protocol : 소켓이 사용할 프로토콜을 정의한다.Domain소켓의 사용 영역을 정의한다.소켓도 인터넷에서 사용하는가, 컴퓨터에서 사용하는 가 등에 따라 나뉜다.인터넷 : AF_INET컴퓨터 : AF_UNIXType & ProtocolUDP 통신과 TCP 통신은 다르다.- SOCKET_STREAM <-> IPPROTO_TCP- SOCKET_DGRAM <-> IPPROTO_UDP소켓 함수의 예1. socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) // TCP 소켓2. socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) // UDP 소켓=> 2개를 95% 이상의 프로그램에서 사용반환에 성공하면 1을 반환한다. (fd)
인터넷 주소와 포트번호를 이용해서 원격 소켓에 연결하기int connet (int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);원격 소켓의 인터넷 주소 지정하기// IP + 포트 번호struct sockaddr_in serveraddr;server_sockfd = socket(AF_INET, SOCK_STREAM,0);serveraddr.sin_family = AF_INET; // 사용할 도메인serveraddr.sin_addr.s_addr = inet_addr("//internet addr"); // 인터넷 주소serveraddr.sin_port = htons(8080); // 포트 번호client_len = sizeof(serveraddr); // 길이를 알아야 정상 작동connet(server_sockfd, (struct sockaddr *)& serveraddr, client_len);함수데이터 입출력소켓 함수 : send, recv, sendto, recvfrom파일 함수 : read, write입력 함수send, sendto, read출력 함수recv, sendto, wrtie사용법은 거의 비슷하며, 파라미터로(int fd, void *buf, size_t count);fd = 소켓 지정 번호buf or msg = 보낼 메시지 혹은 받을 공간count = 그 크기성공 시 0보다 큰 값 return실패 시 0 return* flag는 추후에 알아보자윈도우는 closeSocket()유닉스는 close()=> 윈도우는 소켓을 파일 단위로 보지 않는다.서버 프로그램 흐름도socket() -> ( bind() -> listen() -> accept() ) -> read() || write() -> close()bind : port에 연결listen : 수신 대기열을 만든다.accept : 수신 성공클라이언트 프로그램 흐름도socket() -------------> connect()-> read() || wrtie() ->close()※ 본 글은 개인 포트폴리오 혹은 공부용으로 사용하기 때문에, 무단 복사 유포는 금지하지만, 개인 공부 용도로는 얼마든지 사용하셔도 좋습니다
반응형'C_C++ 프로그래밍 > 뇌를 자극하는 TCP_IP' 카테고리의 다른 글
뇌자극 TCP/IP 6강 요약 (0) 2019.05.25 뇌자극 TCP/IP 5강 요약 (0) 2019.05.20 뇌자극 TCP/IP 3강 요약 (0) 2019.05.19 뇌자극 TCP/IP 2강 요약 (0) 2019.05.19