[[프로그래밍_NOTE]] 124

Call by address

포인터를 사용하는 이유에는 2가지가 있다. 첫째. Call by Address C언어는 Call by Value 만을 지원한다. 이때문에 함수에서 여러개의 값을 조작하여 리턴받기 위해서는 주소를 파마미터로 넘겨 여러개의 값을 조작할 수 있다. ex ) swap() ///////////////////////////////////////////// #include void swap(int* pa , int* pb) { int temp = *pa; *pa = *pb; *pb = temp; } void main() { int a=10 , b=20; printf("a=%d , b=%d\n",a,b); swap(&a , &b); printf("a=%d , b=%d\n",a,b); } /////////////////..

배열

배열의 특징 1. 배열의 이름은 배열의 주소이다. (또한 배열변수 앞에 &를 붙여도 배열의 주소가 리턴된다.) 2. 배열의 이름(배열의 주소)은 배열 1번째 요소의 주소와 같다. 3. 배열의 주소가 같다고 해서 배열의 전체 대상체까지 동일하지는 않는다. 4. C에서의 배열은 Boundary Check를 하지 않는다. (다른 메모리 영역을 침범하지 않도록 프로그래머가 주의해야 한다.) 5. 배열을 함수의 파라미터로 넘기면 배열 자체가 넘어가는 것이 아니라 포인터가 넘어간다. (때문에 항상 배열의 갯수도 파라미터로 넘겨주는 것이 정석이다.)

SymbolTable

/* symbol table test source */ //////////////////////////////////// #include #include void main() { int x; int y; int z; x = 10; y = 20; z = x+y; printf("%d + %d = %d\n", x,y,z); getch(); } //////////////////////////////////// # SP : (stack pointer Register) : SP는 push, pop명령에 의하여 위치값이 변경되므로 변수의 위치는 ebp 레지스터를 이용한다. 1. 선언문에 선언된 변수의 정보는 Symbol Table 에 등록된다. 2. Symbol Table은 각종 정보를 저장하고 있다. 3. 변수는 ..

STACK

가상 메모리 /* STACK 공간의 특징 ************************************************************ 1. main() 에서 사용하는 statck Memory 는 일반적으로 0x0012ff7c 이다. 2. 기본적으로 1M이다. (시스템은 Thread당 1M의 Stack Memory를 할당한다. 그러나 실제로 프로그램에서 사용할 수 있는 statck memory는 이것보다는 작다.) 3. CCCC CCCC으로 자동 초기화 된다. (함수에서 사용하는 메모리 +40h 만큼을 CCCC CCCC으로 초기화 한다.) *********************************************************************************/

WSADATA 구조체

typedef struct WSAData{ WORD wVersion; // WS2_32.dll에서 로드된 윈도우즈 소켓의 버전 WORD wHighVersion; // 로드한 DLL이 지원하는 윈도우즈 소켓의 상위 버전. // (일반적으로 wVersion인자와 동일) char szDescription[WSADESCRIPTION_LEN+1]; // NULL로 끝나는 아스키 스트링 값. // (적재된 WS2_32.dll에서 소켓에 관련된 설명 문자열을 카피) char szSystemStatus[WSASYS_STATUS_LEN+1]; // NULL로 끝나는 아스키 스트링 값. // (시스템의 각종 상태를 알수 있도록 해준다.) unsigned short iMaxSockets; // 어플리케이션에서 사용할 소켓의..

netstat , tracert , ping 주요옵션

netstat /*현재 로컬 호스트의 네트워크 연결 상태를 보여준다. 이 명령어를 이용하면, 로컬 호스트에 연결된 소켓의 정보나 라우팅 상태는 물론 연결을 시도 중이거나 연결된 대상을 볼수있다.*/ -r : 라우팅 테이블을 보여준다. -a : 모든 연결과 listening port 에 대한 정보를 보여준다. tracert /*목적지까지의 링크 상태를 보여준다. 목적지까지 경유하는 과정, 경유상태를 보여준다.*/ -h : 목적지까지의 최대 hop카운트 -w : 응답이 오기까지의 최대 시간 ping /*목적지까지의 네트워크의 상태를 체크한다. 즉, 목적지의 호스트가 응답하는 시간(echo)을 체크한다. 이 명령어를 통해서 목적지까지의 네트워크의 응답속도와 연결가능 여부등을 체크*/ -n count : 목적지..

NIC , NDIS , Daemon(system daemon) , inetd , HOP(Hop Count)

NIC ( Network Interface Card ) NIC는 네트워크상에서 다른 컴퓨터 시스템에 데이터를 보내거나 받을 때 사용하기 위한 하드웨어를 말한다. 이런 종류의 하드웨어는 모뎀이나 랜카드 등이 해당되는데 , 각각의 NIC는 자신에게 주어진 유일한 식별번호를 가지고 있다. 이 식별 번호는 네트워크에서 아주 중요하게 쓰인다. NDIS ( Network Driver Interface Specification ) NDIS는 Microsoft 사와 3Com 사가 개발한 것으로 네트워크 장치의 드라이버를 연결하는 일종의 인터페이스이다. 이 인터페이스를 통하여 프로그래머는 상대 시스템의 장치의 종류에 상관없이 NDIS만을 호출하여 프로그래밍을 할 수 있도록 한다. DAEMON (System Daemon)..

로비채팅 (api)

기본적인 로비채팅 기능을 구현한 메신저. /***************************************** 서버는 MS SQL2005 DB연동이 필요 SQL 인증 방식을 통한 ODBC 접속 서버 : SeungHwan 사용테이블 : Lobby-pj 접속id : sql 접속pw : sql-psw ******************************************/ 1. 다 대 다 채팅(로비채팅) 가능 2. 친구등록후 1:1 채팅 가능 3. p2p 게임은 아직 구현하지 않음

EzChatter(TCP 방식) - api로 구현

/* 간단하게 구현된 1:1 방식의 채팅 프로그램이다. 실제 네트워크 어플리케이션 에서는 이러한 방법은 쓸 수 없으며, 이것은 단지 문자열에 대해서만 동작할 수 있으며 다른 종류의 데이터는 처리하는 것이 곤란하다. 1. 단일 접속만을 허용한다. 2. 한쪽은 서버 , 한쪽은 클라이언트 3. 채팅 이외의 기능은 가지지 않는다. 4. api로 구현되었다. */ ============================================================================= 1. 실행후 wait client라는 문자열을 입력하면 Server 상태로 Client의 접속을 대기한다. [ 창을 보면 현재 server의 IP정보를 확인할 수 있다. ] 2. 또 프로그램을 실행후,(client)..