본문 바로가기

전체 글

[Pro*C 오라클 DB] Pro*C 오류,에러 진단과 처리 에러나 경고를 감지하고 정보를 얻기 위해서는 별도 통신 영역의 정보를 가진 도구가 필요함 Pro*C 에서는 SQL 통신영역(SQLCA)과 오라클 통신영역(ORACA)라는 두 개의 특수한 데이터 구조를 지원한다 SQLCA 는 Pro*C 프로그램에 필수 요소이고 ORACA는 더 많은 정보를 얻기 위한 선택 요소임 SQLCA를 사용하여 모든 QL 문장의 상태를 감지하고 상태코드의 정보를 줌더 많은 확장 정보를 얻고자 할 때, 또는 오류가 발생한 시점에 수행된 SQL문의 정보를 확인하기 위해 ORACA를 사용함 Oracle Text File요구사항내용sqlca필수SQLCA 를 위한 선언oraca선택ORACA 를 위한 선언  두 가지 오류 검출 WHENEVER 문장을 사용하여 발생 가능한 모든 오류에 대한 동일한.. 더보기
[Pro*C 오라클 DB] Pro*C 시작 Pro*C 개요PL/SQL은 오라클 내부라는 한정된 공간에서 실행되는 프로그램내부라는 한정된 제약을 해결하기 위해 외부 C 프로그램과 결합할 수 있는 선행 컴파일러 제공-> 오라클에서 Pro*C 라고한다오라클 내부가 아닌 외부 프로그램으로 작성되어 작업을 수행-> Pro*C 만으론 컴파일을 할 수 없다.-> 선행 컴파일Pro*C 는 실행파일이 아닌 C 컴파일러가 인식 할 수 있는 출력 파일(~~~.c) 파일을생성한다.C프로그램의 통상적인 방법으로 컴파일 되고, 오라클 라이브러리와 결합되어 실행모듈을 만든다. 확장 범위큰 틀에서 보면 C 프로그램안에 SQL 코드가 들어가 있는 것이 Pro*C 프로그램이다.C로 구현할 수 있는 모든 기능은 Pro*C 로도 구현 가능하다. 프로그램 작성방식 컴파일 옵션의 변경.. 더보기
소켓 입출력 모델 Select, Poll, EPoll 소켓 모드의 종류소켓은 소켓 함수 호출 시 동작하는 방식에 따라 블로킹, 넌블로킹 소켓으로 구분한다.-> 이를 소켓 모드라고 부름 블로킹 소켓소켓 함수 호출 시 조건을 만족하지 않으면 함수가 리턴하지 않고 스레드 실행이 정지함조건을 만족하면 소켓 함수가 리턴하고 정지된 스레드가 실행은 재개함 주요 소켓 함수와 리턴 조건socket()TCP/UDP성공 시 새로 생성된 소켓의 파일 디스크립터 리턴, 실패 시 -1 리턴.bind()TCP/UDP성공 시 0 리턴, 실패 시 -1 리턴. 지정된 IP와 포트 번호로 소켓을 바인딩. 이미 사용 중인 포트나 권한 문제로 실패할 수 있음.listen()TCP성공 시 0 리턴, 실패 시 -1 리턴. 서버가 연결을 대기 상태로 설정. 연결 요청을 받기 위한 준비가 완료되면 .. 더보기
소켓 옵션 소켓 옵션의 종류와 관련 함수소켓 함수를 호출하더라도 소켓 코드나 프로토콜 구현 코드의 동작이 달라져야하는 경우가 있다.소켓 옵션을 사용하면 소켓 함수의 기본 동작을 변경할 수 있고,이를통해 소켓 코드와 프로토콜 구현 코드를 세부적으로 제어 할 수 있다. 소켓 코드가 처리하는 옵션- 옵션을 설정하면 소켓 코드에서 해석하고 처리함- 프로토콜은 독립적 성격이지만 옵션의 실제 적용 여부는 프로토콜 종류에 따라 다름 프로토콜 구현 코드가 처리하는 옵션- 옵션을 설정하면 소켓 코드에서 해석하고 처리함- 프로토콜에 의존적 성격이지만 프로토콜 종류에 따라 옵션 자체가 달라짐 소켓 옵션을 설정할 때는 setsockopt( ) 함수C#include #include int setsockopt( ① int sock, ② i.. 더보기
UDP 서버 - 클라이언트 TCP와 UDP 차이점    UDP 서버1. socket( ) 함수로 소켓을 생성함으로써 사용할 프로토콜 결정2. bind( ) 함수로 지역 IP 주소와 포트번호를 결정3. 클라이언트가 보낸 데이터를 recvfrom( ) 함수로 받음     -> 이 때 원격 IP주소와 포트번호를 알 수 있음4. 받은 데이터를 처리해 sendto( ) 함수로 보냄5. 작업을 마치면 close( ) 로 소켓을 닫음 UDP 클라이언트1. socket( ) 함수로 소켓을 생성함으로써 사용할 프로토콜 결정2. sendto( ) 함수로 서버에 데이터를 보냄    -> 이 때 원격 IP주소와 원격포트번호, 지역 IP주소와 포트번호가 결정됨3. 서버가 처리해 보낸 데이터를 recvfrom( ) 함수로 받음4. 모든 작업을 마치면 cl.. 더보기
멀티 스레드 : 리눅스 다수의 클라이언트를 각 독립적으로 처리하는 실용적인 TCP서버를 작성하고자 할 때 대표적인 다중 처리 기법인 멀티스레드를 고려할 수 있다. 스레드 기본 개념스레드란?스레드(Thread)는 프로세스(Process) 내부에서 실행되는 단위하나의 프로세스는 하나 이상의 스레드를 가질 수 있다프로세스: 실행 중인 프로그램, 독립된 메모리 공간을 가짐 (코드, 데이터, 힙, 스택).스레드: 프로세스 내부에서 실행 흐름을 나누는 단위, 같은 메모리 공간을 공유.프로세스와 메모리 구조프로세스 메모리 구조:코드(Code) 영역: 실행 코드가 저장됨.데이터(Data) 영역: 전역/정적 변수.힙(Heap) 영역: 동적 메모리 할당.스택(Stack) 영역: 함수 호출 및 지역 변수.스레드 특징:코드, 데이터, 힙 영역은 프.. 더보기
TCP 서버 - 클라이언트 TCP 서버 - 클라이언트 개념 서버 - 클라이언트 예시웹 서버와 웹브라우저가 동작하는 모습브라우저는 사용자가 입력한 주소를 해석하여 대기중인 웹서버 접속-> HTTP 이용하여 요청 보냄-> 서버는 웹브라우저에서 받은 요청을 분석 후 HTTP를 이용해 응답-> 브라우저는 서버에서 받은 데이터를 처리해 화면에 표시 웹 서버 - 클라이언트 는 대표적인 TCP 서버 - 클라이언트 응용 프로그램이다.  TCP서버의 핵심동작1. 서버는 먼저 실행하여 클라이언트 접속을 기다린다 listen( )2. 클라이언트는 서버에 접속 connect( ) 하여 데이터를 보낸다 send( )3. 서버는 클라이언트 접속을 수용 accept( ) 하고 클라이언트가 보낸 데이터를 받아 recv( ) 처리한다.4. 서버는 처리한 데이터.. 더보기
소켓 주소 구조체 다루기 소켓 주소 구조체네트워크 프로그램에 필요한 정보를 담는 구조체다양한 소켓 함수의 인수로 사용된다프로토콜 체계에 따라 주소 지정방식이 다르므로 다양한 소켓구조체가 존재함기본이 되는 것은 sockadrr 구조체이다 C#include struct sockaddr { ① unsigned short sa_family; ② char sa_data[14];}1. 주소 체계를 나타내는 16비트 정수 값이다. -> TCP/IP 프로토콜을 사용한다면 IP 버전에 따라 AF_INET, AF_INET6 값을 가진다.2. 해당 주소체계에서 사용할 주소 정보를 담는다. -> 주소체계에 따라 필요한 정보에 따라 가장 일반적인 바이트 배열로 선언되어 있다... 더보기