본문 바로가기

프로그래밍

DHCP Probe 소스 코드 이전에 작성했던 현재 네트워크에서 DHCP 서버를 확인하는 글을 참고하여http://sound79.tistory.com/169 간단하게 DHCP Probe 코드를 작성해 보았습니다.소스코드를 보면 간단합니다. DHCP 패킷을 하나 만들어서 전송한 후 DHCP Offer 메시지를 일정 시간 기다립니다.DHCP Offer 메시지를 수신하면 현재 네트워크에 DHCP Server가 존재한다고 판단하도록 되어 있습니다. DHCPProbe.h /* * DhcpProbe.h * * Created on: 2014. 8. 17. * Author: sound79@gmail.com */ #ifndef DHCPPROBE_H_ #define DHCPPROBE_H_ #include #include #include #include.. 더보기
현재 네트워크에서 DHCP 서버가 동작되고 있는지 확인? 현재 연결된 네트워크에서 DHCP 서버가 동작 되고 있는지? 즉 이미 DHCP 서버가 동작 되고 있는 네트워크 인지를 판단해야 할 필요성이 생겼다. 먼저 DHCP 프로토콜에 대해서 간단히 살펴 보면 다음과 같습니다. DHCP: http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol (figure1 refer wikipedia) 위의 그림과 같이 (1). Client -> Server 로 DISCOVERY를 Broadcast : DHCP 서버가 있는지 패킷을 브로드 캐스팅한다. (2). Server -> Client에서 OFFER로 Unicast : DHCP 서버는 DISCOVERY 메시지를 받으면 해당 Client에게 이 IP 사용할래? 라고 .. 더보기
[C Programming] Struct Hack 먼저 다음의 구조체에 대해서 어떻게 생각하는가요?... struct SHack{int A;int B;char array[0];} ; 컴파일시 char array[0] 와 같은 배열의 실제 크기는 얼마로 할당될것인가? 결론부터 말하자면.. "Struct Hack"은 구조체에서 가변길이의 멤버를 사용하기 위한 테크닉이다. 실제 사용시 아래와 같이 먼저 메모리를 할당한 후 사용을 할 수 있다.struct SHack *e = malloc(sizeof(*e) + sizeof(char) + ARRAY_SIZE); 이는 다음과 같은 구조체와 같다. struct SHack{int A;int B;char array[ARRAY_SIZE]; }; gcc 는 이와 같은 메모리를 A, B 에 이어서 array를 연속적으로 할당.. 더보기
[알고리즘] 합병 정렬 (The divide-and-conquer) 일명 합병 정렬은 merge sort로 잘 알려져 있으며 분할 정복 방식의 정렬 알고리즘이다. divide: 주어진 문제를 작은 문제로 분할한다. conquer: 작은 문제를 순환적으로 처리. 즉 더 작은 소문제의 순환이 없을때까지.. merge: 작은 문제에 대한 해를 합병하여 원래 문제에 해를 구한다. 다음 그림은 Introduction to Algorithms에 나와 있는 그림으로써 합병정렬의 모습을 보여 준다. 알고리즘의 Pseudu code는 다음과 같다. MERGE(A, p, q, r) 1 n1 ← q - p + 1 2 n2 ← r - q 3 create arrays L[1 ‥ n1 + 1] and R[1 ‥ n2 + 1] 4 for i ← 1 to n1 5 do L[i] ← A[p + i -.. 더보기