전체 글 썸네일형 리스트형 TCP/IP 4.소켓 네트워크프로그램 개발 네트워크 프로그램의 흐름 1. 송신측 소켓 생성 -> 포트 부여 -> 상대편 IP/Port 주소로 연결 -> 통신 -> 종료 2, 수신측 소켓 생성 -> 포트 부여 -> 상대편 연결 기다리기 -> 통신 -> 종료 소켓 생성 - domain: 소켓의 사용 영역을 정의 - type: 소켓 유형을 정의 - protocol: 소켓이 사용할 프로토콜을 정의 대게 두가지 소켓 함수를 사용 socket (AF_INET, SOCK_STREAM, IPPROTO_TCP) socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP) 반환 값 int fd = socket(AF_INET, SOCK_STream, IPPROTO_TCP) int fd = socket(AF_INET, SOCK_DGRAM, IPPROTO.. 더보기 TCP/IP 3. 소켓 네트워크 프로그래밍에 대한 이해 소켓 - TCP/IP 4계층에서 전송계층 위에 놓임 - 전송 계층위에서 전송계층의 프로토콜 제어를 위한 코드를 제공 - 소프트웨어 계층이라고 할 수 있음 BSD 소켓 - C 언어로된 인터페이스를 제공 - 자유롭게 사용할 수 있도록 공개 소켓이 하는 일 - 소프트웨어와 소프트웨어를 연결 - 소프트웨어간 데이터 통신 네트워크 연결 모델 - 인터넷은 프로그램과 프로그램의 연결 - 연결에서는 다양한 방식이 있음 - 서버 & 클라이언트 모델 - 메니저 & 에이전트 모델 - P2P 모델 서버 & 클라이언트 모델 - 고객 & 서비스 제공자 모델 - 서버: 데이터를 관리하고 서비스를 제공하는 네트워크 프로그램 - 클라이언트: 서버에 정보를 요청하는 프로그램 - 중앙 집중형 정보 제공 방식 메니저 & 에이전트 모델 - .. 더보기 TCP/IP 2.네트워크 프로그램 환경 구축 리눅스 운영체제와 네트워크 프로그래밍 - 리눅스는 유닉스 철학을 그대로 계승 - 네트워크 프로그래밍 기술은 유닉스 기반 - 네트워크 프로그래밍 기술은 운영체제와 상관 없이 공유 (BSD 소켓) BSD 소켓 - UC Berkeley에서 1989년 개발 - C API 지원 - 산업 표준 - 모든 유닉스와 리눅스 그리고 윈도우에서 채택 리눅스 개발 환경 - 배포판 : Ubuntu 10.10 이상 - 컴파일러 : gcc version 4.0 이상 - 에디터 : vi, emacs, pico - 통합 개발 환경 : eclipse + CDT, Kdevelop 가상화 (Virtualizaiton) - 하나의 시스템에서 여러 운영체제를 운용 - 손쉬운 소프트웨어 인스톨 - 테스트, 간단한 재해 복구 - 인프라 스트럭쳐의.. 더보기 TCP/IP 1. 네트워크와 TCP/IP 원하는 노드를 식별하기 위한 프로토콜: IP 전체 네트워크에서 식별가능한 IP주소를 부여 IP주소를 이용해서 원하는 노드로의 경로를 설정 인터넷상의 거의 모든 응용이 IP를 기반으로 함 노드와 노드 사이에는 경로 설정을 위한 라우터가 배치됨 데이터 흐름을 제어하기 위한 프로토콜: TCP 테이터는 여러 패킷으로 조각 나서 이동 패킷 통신은 네트워크를 효율적으로 활용 TCP는 패킷을 재 조립하고 재 전송을 요청하는 등 흐름을 관리 OSI 7계층 인터넷 응용의 개발을 위해서 7계층으로 전문화 개발자는 자신의 전문 계층의 지식만으로 원하는 응용을 개발 효율적이고 빠른 개발이 가능함 응용 계층 - 표현 계층 - 세션 계층 - 전송 계층 - 네트워크 계층 - 테이터 링크 계층 - 물리 계층 네트워크 프로그래밍 인터.. 더보기 Network Theory - Ch 01. Introduction 보호되어 있는 글입니다. 더보기 Compiler#1 컴파일러 원리 Compiler란 무엇인가 Compiler? Compiler == Translator, 언어 A를 언어B로 번역하는 과정 A: Source Language B: Target Language 간단한 컴파일러는 Preprocessor, Assembler가 있음 Compiler의 역할 High Level Language → Low Level Language C code → compiler → assembly code C ++ code → compiler → C Code Java code → compiler → Bytecode Compiler의 Paradigms Imperative Languages: how it be done ex) Fortran, Algol, C, C++, Java, C#… Declarati.. 더보기 Java#5 쓰레드 3.0 Java의 쓰레드(Thread) 동작하고 있는 프로그램을 프로세스(Process)라고 칭하며, 보통 한 개의 프로세스는 한 가지의 일을 하지만, 쓰레드를 이용하면 한 프로세스 내에서 두 가지 또는 그 이상의 일을 동시에 할 수 있음 Java에서 쓰래드의 개념 자바의 쓰래드는 가상 CPU로써 java.lang.Thread 클래스에 패키징 되어있음 CPU가 처리하는 코드는 Thread클래스에 전해짐 CPU가 처리하는 데이터는 Thread클래스에 전해짐 run(): 모든 쓰래드는 특정 Thread 객체의 run()매서드를 통해 완성됨 start(): 코드의 완료 여부와 상관없이 계속 아래 코드를 수행, 멀티 스레드를 사용하는 경우에는 run()이 아닌 start()를 사용 쓰래드를 구현하는 방법은 두가.. 더보기 Java#4 인스턴스 변수, 내부 클래스, 추상 클래스, 인터페이스 2.10 Instance Variable & Class Variable 클래스 변수: 모든 인스턴스에서 똑같은 값 가짐(static) 인스턴스 변수: 인스턴스마다 다름 클래스 변수 syntax: static type classVar; static returnType classMethod{[paramlist]}{...} 인스턴스 변수는 메모리 우선 분배 인스턴스 변수는 객체를 통해 방문 모든 인스턴스 변수는 한개의 클래스 변수를 공유함 클래스 변수는 클래스명을 통해 방문 & 객체를 생성 방문 가능 2.11 Instance Method & Class Method 클래스 메서드는 인스턴스 변수를 방문할 수 없고 클래스 변수만 방문할 수 있음 클래스 매서드는 클래스 이름을 통해 호출 클래스 메서드는 this&s.. 더보기 이전 1 2 3 다음