본문 바로가기

공부

(20)
5. 클라이언트의 접속 요청을 허락하고 통신용 소켓 생성 - accept() 1. header #include 2. function int accept(int socket, struct sockaddr *addr, socklen_t *addrlen); 1) int socket : listen()으로 클라이언트의 접속요청을 받고있는 소켓 2) struct sockaddr *addr : 클라이언트 주소정보를 가지고 있는 sockaddr 구조체 포인터 3) socketlen_t *addrlen : addr 포인터가 가르키는 구조체의 크기 4) return : 성공 실패 클라이언트와의 통신 소켓 디스크립터 -1 3. 사용 #include #include #include #include #include #define PORT 80 int main() { int sock = socket(A..
4. 클라이언트에서 서버에 연결 요청하기 - connect() 1. header #include 2. function int connect(int socket, const struct sockaddr *server_address, socklen_t addrlen); 1) int socket : 서버와 연결할 소켓 2) struct sockaddr *server_address : 서버의 주소를 가지고 있는 sockaddr 구조체의 포인터 3) socklen_t addrlen : server_address 포인터가 가르키는 구조체의 크기 4) return : 성공 실패 0 -1 3. 사용 #include #include #include #include #include int main() { const int port = 80; int sock = socket(AF_IN..
3. 클라이언트의 접속요청 확인하기 - listen() 1. header #include 2. function int listen(int socket, int backlog); 1) int socket : 클라이언트의 접속요청을 받도록 설정 할 소켓 디스크립터. 2) int backlog : 대기 메시지 큐의 개수 3) return : 성공 실패 0 -1 3. 사용 #include #include #include #include #include #define PORT 80 int main() { int sock = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in addr; socklen_t len = sizeof(addr); addr.sin_family = AF_INET; addr.sin_port = htons(P..
2. 소켓에 정보 지정하기 - bind() 1. header #include 2. function int bind(int socketfd, struct sockaddr* address, socklen_t addressLength); 1) int socket : socket()등으로 생성한 소켓 디스크립터. 2) struct sockaddr* address : 주소 정보를 담은 구조체. 통신 주체에 따라서 달라집니다. struct 내용 sockaddr 기본 구조체. sockaddr_in AF_INET인 경우. (IPv4) sockaddr_in6 AF_INET6인 경우. (IPv6) sockaddr_un AF_UNIX 또는 AF_LOCAL인 경우. (Unix Domain Socket) 3) socklen_t addressLength : address..
1. 소켓 만들기 - socket() 1. header #include 2. function int socket(int domain, int type, int protocol); 1) int domain : 통신의 주체를 결정합니다. 아래는 상수값으로, socket.h 에 정의되어있음. domain 내용 PF_INET, AF_INET IPv4 인터넷 프로토콜을 사용합니다. PF_INET6, AF_INET6 IPv6 인터넷 프로토콜을 사용합니다. PF_LOCAL, AF_UNIX 같은 시스템 내에서 프로세스 끼리 통신합니다. PF_PACKET Low Level Socket 인터페이스를 이용합니다. PF_IPX IPX 노벨 프로토콜을 사용합니다. AF_UNSPEC 정의되어있지 않음. PF는 프로토콜 패밀리 이며, AF는 주소 패밀리 이다. PF_..
0. 리눅스 TCP/IP 통신 1. TCP/IP 통신 함수 사용순서 2. 서버 프로그램 3. 클라이언트 프로그램 이미지 출처 : http://forum.falinux.com/zbxe/index.php?document_srl=429387&mid=C_LIB
[C++ STL] Set, Multiset 1. Set - 저장 데이터의 값이 유일한 자료구조이다.(중복이 허용되지 않는다.) - 노드 기반 컨테이너이다. - 임의 접근이 불가능하다. - 균형 이진 트리로 구현되어있다. - 각 노드는 pair로 구성되었다. - multiset은 set에서 중복이 허용된다는 것 말고는 다른게 없기 때문에 함께 정리한다. 2. Include #include // multiset도 set에 포함되어있음 3. 생성자 std::set name; // 기본 오름차순(== set) std::set name(const key_compare& _Pred); // 정렬 방법을 _Pred로 설정한다. (== set) std::set name(const set& otherSet); std::set name(_Iter first, _I..
[C++ STL] Vector 1. Vector - 원소가 하나의 메모리 블록에 연속하게 저장된다. - 배열은 크기가 고정이고 vector는 크기가 동적으로 변한다. (개수를 미리 알 수 없다면 vector를 사용한다.) - 임의 접근이 가능하다. ( [], at() ) - ArrayList는 배열에 동적 메모리 증가 기능을 구현한 클래스, Vector는 ArrayList에 동기화가 보장되도록 최적화한 클래스이다. - Deque와 비교 Deque Vector 효율성 크기 변경 가능 O (여러 개의 메로리 블록을 하나의 블록처럼 사용 메모리 부족시 새로운 블록 추가 할당) O (할당된 메모리가 부족할 시 이전 메모리 블록 삭제후 새로운 메모리 블록을 재할당) Deque 앞에 삽입, 삭제 용이 O X Deque 뒤에 삽입, 삭제 용이 O..