TCP/IP 서버를 만들때는 다음과 같은 방법으로 만들게 된다. 1. 소켓 생성 2. bind 3. listen 4. accept 로 클라이언트 소켓 생성 소켓 프로그램을 처음하는 사람들이 겪게 되는 의문 중의 하나는 무엇에다가 묶고(bind), 듣기전까지는 어떤 일이 일어나길래 들어야(listen)하는가인데, 여기에는 발상의 전환이 필요하다. 일반적으로 파일을 열고 파일에서 읽는 과정을 생각해보면, 이미 경로라는 구별되어 있는 개체가 존재하고 그것을 다루기 위한 기술자(descriptor)를 만들어 기술자를 모든 파일 관련 입출력 함수에 인자로 넘기게 되는데, 소켓 프로그램은 그 반대라는 것이 중요하다. 기술자(socket)를 먼저 만들고, 그 기술자를 구별될 수 있는 경로 혹은 주소에 가져다가 붙이는..
#!/usr/bin/hojinsh 머리가 아픈 것은 물이 없이 말라 버린 모래주머니에 유리조각을 넣고 굴리는 것과 같은 것이다. 그것이 일 때문이거나, 그것이 방금칠한 페인트 냄새때문이거나, 그것이 잠이 부족해서이거나, 모두 물이 없이 말라 버린 모래 주머리의 유리조각 처럼 돼 있기 때문에 그렇기 때문에, 그런 상상을 진지하게 하고 나서, 물 한 모금을 마시면 된다. 이야하! 물이 들어가면, 체내의 독소의 농도가 내려가게 되고, 알량한 몇 0.0001%의 변화로 머리가 아프지 않게 된다. 안믿는 사람은 exit 1 되고, 믿는 사람은 exit 0 될 지어다.
컴파일러 캐시(ccache)와 gcc 3.4 이상이나 Visual Studio가 지원하는 미리 컴파일된 헤더(Precompiled Header; pch)의 주 목적은 컴파일 속도를 높히는데 있다. 간단히 이들의 원리를 설명하자면, 컴파일러 캐시는 PATH상에서 먼저 설치 돼있는, gcc로 이름이 바뀌어 있는 ccache가 gcc를 실행시킬때 수행되어 PATH의 이하 부분에 오는 실제 gcc를 자식 프로세스로 실행하면서, gcc의 버전, gcc의 전처리 결과(gcc -E) command line 인자 등을 분석하여 동일한 실행 명령과 전처리 결과가 오면, 컴파일을 수행하지 않고 이전에 컴파일 결과로 나온 목적파일(Object file)을 현재 시각으로 복사해서 만들어주는 일을 한는 것이며, 미리 컴파일된 ..
http://bbs.kldp.org/viewtopic.php?t=768 여기에 썼던글이다. (drupal로 이관하면서 이관된 문서를 찾으려 했으나 역부족.) 본 글은 IP 주소를 얻는 방법에 대해 쓴 것이 아니라, 그 이면에 있는 드라이버와의 통신에 대해 다룬다.#include #include #include #include #include #include #include #include #include #include #if defined(sun) #include #endif #include #if defined(linux) #include #endif #define BUFFERSIZE 1024 const char * localip = "0.0.0.0"; const char * myip() { cons..
소켓프로그래밍 깊이 보기 1 : 접속이 닫힌 후 읽을 수 있는 버퍼Quiz 하나를 생각해보자.클라이언트가 서버에 접속하여 뭔가를 전송하고 있다. 클라이언트는 1000 바이트를 전송하고나서 바로 소켓을 종료하였는데, 서버는 1 byte 씩 읽으면서 행의 끝을 판단하는 구조로 되어 있다. 서버가 10 바이트를 읽었는데, 실상 접속은 종료되었다. 서버쪽 프로그램은 11 바이트를 읽을 때, 접속 종료를 바로 알 수 있을까? 싱겁지만, 답은 서버쪽에서 1001번째를 읽기 시도할 때 비로소 안다는 것이다. 그 이유는 TCP는 데이터의 정확한(?) 전송을 보장하도록 되어 있기 때문인데, 끊어진 클라이언트에게 일단 1000 바이트에 대해 받았다는 신호를 보냈기 때문에, 서버 프로그램에 안정적으로 데이터를 올려 보낸후 ..
어떤 메시지를 암호화하여 전송할 때, 과연 그 메시지가 정상적으로 전달되었는가를 테스트하는 방법에 관한 생각이다. A. 1. 평문을 암호화한다. 암호문의 해시값을 구하여 암호문과 해시값을 전달한다. 2. 받은 쪽에서는 암호문을 풀기전에 암호문의 해시값을 구하여 전달받은 해시값과 같은지 비교한다. 3. 같을 경우 암호문을 푼다. 위 방법과 B. 1. 암호문만을 전달한다. 암호문을 풀어 보면, 평문과 그 해시값이 복원된다. 2. 받은 쪽에서 평문에 대한 해시값을 다시 계산해서 복원하여 얻은 해시값과 같은지 비교한다. 3. 같을 경우만 평문을 인정한다. 이 방법 중 어떤 것이 좋을까? 아니면 둘을 합한, C. 1. 평문을 암호화한다. 암호문의 해시값을 구하여 암호문과 해시값을 전달한다. 2. 받은 쪽에서는 암..
심재희라는 작가의 스포츠 서울 칼럼에 재밌는 글이 있어서 인용해 본다. 호나우디뉴의 외계인 카리스마 "천재는 노력한 자를 이길 수 없고, 노력한 자도 즐기는 자를 이길 수는 없다". 보통 카리스마 있는 선수들을 떠올리면 매우 험악한 인상을 머리에 그리기 일쑤다. 거칠고 투박하지만 팀에 든든한 버팀목이 되어주는 그런 선수들이 '카리스마맨'으로 통해왔다. 하지만 호나우디뉴는 그와는 또 다른 카리스마를 가지고 있다. '미소 속의 비치는 카리스마'라고 할까. 항상 즐겁게 웃으면서 경기를 펼치지만 그의 몸짓 하나하나는 보통 선수들과 차원이 다르다. 또한 상대방도 미워할 수 없게 만드는 좋은 매너를 갖추고 있고, 승부를 결정짓는 해결사 능력까지 보유하고 있다. 한마디로 실력과 인품, 그리고 축구에 대한 끝없는 열정..
- Total
- Today
- Yesterday
- 커피
- 벤자민
- 구근
- OpenID
- Subversion
- 오픈소스
- BlogAPI
- 식물
- tattertools
- ssh
- nodejs
- 퀴즈
- perl
- SSO
- writely
- TCP/IP
- Tattertools plugin
- url
- Linux
- JavaScript
- SVN
- macosx
- MySQL
- 수선화
- 킹벤자민
- 대화
- 클레로덴드럼
- VIM
- 덴드롱
- 디버깅
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |