분류 전체보기 (432) 썸네일형 리스트형 도메인 이름을 이용해 IP 주소 얻기(gethostbyname) gethostbyname 함수의 이름 대로 이름에서 host 주소를 얻어 올 수 있는 함수다. 그렇다고 해서 꼭 IP주소만을 가져 오느냐 하면 그것도 아니다. struct hostent 라는 구조체를 이요해서 호스트의 대표이름, 별명, 주소의 타입, 주소 리스트들을 얻어 올수 있다. IPv4에서만 정상적으로 돌아가는 함수이며 다음 POSIX에서 퇴출 당할 가능성이 있다고는 하지만 여지껏 일반적으로 잘 사용 되어져 왔던 함수다. #include extern int h_errno; struct hostent *gethostbyname(const char *name); struct hostent { char *h_name; /* official name of host */ char **h_aliases; /*.. Leader/Follower pattern 얼마전에 libevent가 threadsafe 하지 않다는 글을 대충 번역 해서 올렸더니, 지인이 leader/follower pattern이라는 것을 소개 해줬다. 인터넷 검색 결과 ACE framework에서 사용 되는 서버패턴의 일종이라는데 아직 구현을 해보지 않아서 성능이 얼마나 나올는지는 장담하지 못한다. 내가 구현 하려고 했던 형식은 이벤트(accept/read ..etc)를 감시하는 thread가 하나 있고, 이벤트가 발생하면 event queue에 그 이벤트들을 집어 넣는다. 그럼 event queue 반대편의 worker thread들이 그 이벤트에 맞는 핸들링을 하는 구조 였는데 오버헤드가 많아서 실질적으로 사용하기는 다소 무리가 있는 형식이었다. 그에 반에 leader/follower.. 지름신 강림 시리즈 2편 - GP2X 가격 : 165,000 원 상품평 : 일단 3D 지원 안되고, 화질 이 구리고, 베터리가 AA 사이즈를 사용하기 때문에 서너 시간 마다 한번씩 갈아 줘야 하고, SD 메모리를 사용하기 때문에 업로드 속도가 느리다라는것 외에는 아주 마음에 든다. 개인적으로 오락을 별로 좋아하지 않기 때문에 오락 할 일도 별로 없고, 웅장한 사운드, 커다란 화면에서 영화를 보는 것을 즐기기 때문에 여기서 영화 볼일도 없다. mp3와 ogg가 지원된다고 하나 음악은 잘 안들으니 일단 패스~! 그럼 이 기계가 나에게 무슨 필요가 있을까? OPEN SOURCE!! 이유는 오직 하나 오픈소스 이기 때문이다. 위키피데아를 살펴보니 SDK도 잘 지원이 되는 것 같고, 이것 저것 필요한 유틸들을 사람들이 많이 올려 놓는것 같다. 아직 .. Condition Variables condition variables와 mutex를 같이 사용할 경우 condition variable은 임의의 상태(condition)이 발생하길 기다리는 race-free 한 방법을 제공 한다. condition과 mutex의 사용에 대한 간략한 개념을 이야기 하자면 : condition 자체는 mutex와 함께 사용되어야만 한다. mutex는 condition variable이 wait로 넘어가기 전의 초기화라던지 기타 등등에 대한 concurrency를 보장한다. condition variable 초기화 condition variable이 사용되기 전에 역시 다른 동기화 객체와 마찬가지로 초기화라는 것이 필요하다. C/C++에서 condition variable은 pthread_cond_t 데이터 .. sendto & recvfrom TCP는 연결지향의 통신에 신뢰성을 보장하고 UDP는 비연결 지향의 통신에 신뢰성을 보장하지 못한다는 것 같은 지루하고 이론적인 이야기는 저기 나 보다 더 많이 공부하신 분들이 써 놓은 책이나 웹페이지에게 떠넘겨 버리고(http://en.wikipedia.org/wiki/User_Datagram_Protocol), 여기서는 유닉스계열 쪽의 UDP소켓 API의 사용법에 대해 간략히 알아보고, 그에 발생 할 수 있는 예외 상황들을 다뤄 보고자 한다. UDP 통신은 위에서 언급했던것 처럼 말 그대로 비연결이다. 한글로 또박또박 풀어 쓰자면 연결하는 과정이 따로요 없다는 소리다. 어떻게 연결을 하지 않고 통신을 할 수 있는가라고 반문한다면 TCP의 four-way handshake처럼 쌍방간에 연결을 맺었다는 .. [socket] shutdown (half close) "Half-close"?? 절반만 닫는다는게 무슨 소리야? half-close의 의미는 소켓의 레퍼런스 카운트나 기타 등등 들은 유지한체 write stream이나 read stream만을 선별적으로 닫는다는 뜻이다. 그에 대한 API는 아래와 같다. #include int shutdown(int fd, int how); fd : half-close 하고자하는 파일 디스크립터 how : close 모드. 아래 값 중 하나를 가질 수 있다. SHUT_RD : 입력 스트림 종료. 상수 값 0 SHUT_WR : 출력 스트림 종료. 상수 값 1 SHUT_REWR : 입출력 스트림 모두 종료. 상수 값 2 도데체 이게 왜 필요한거지? 그냥 닫아 버리면 무슨 문제라도 생기나? 위와 같은 의문을 충분히 가질 수 있다.. 소켓 종료와 TIME_WAIT(Socket termination and TIME_WAIT) 오늘은 소켓의 종료와 그에 따라 발생하는 소켓의 상태 변화에 대해 알아 보도록 하겠다. 먼저 소켓은 생성될 때는 3-way hand shaking을 통해서 생성되지만, 종료 될때는 한단계 더 많은 4-way hand shaking을 거쳐 종료 된다. 위에서 분명히 4-way.. 4단계라고 이야기 했다. 그럼 어떤 4단계를 거치는지 알아 보자. 1. A가 B에게 연결 종료를 요청한다. 2. B는 바로 종료를 하는 것이 아니라, 단순히 ACK만을 날리고 있다. B도 종료 하기 전에 할 일이 있기 때문에 바로 FIN을 날리지 않고, 단순히 ACK를 날리고 CLOSE_WAIT 상태로 넘어 간다. 3. 볼일을 다 보고난 B는 이제서야 FIN을 날리고 연결을 종료 하고자 한다. 4. A는 B의 FIN을 잘 받았다는.. [C/C++] Read/Write lock Read/Write Lock의 개념 Read/Write Lock(이하 rwlock)의 기본적인 개념은 아래와 같이 간단하다. Read 작업은 값을 변경하지 않으니, 하나의 크리티컬 섹션에 여러개의 스레드가 진입해도 일관성 관련 문제가 발생하지 않는다. Write 작업은 값을 변경 할 수도 있으니, 하나의 크리티컬 섹션에 여러개의 스레드가 진입 할 경우 일관성이 깨질 수 있다. Read 작업은 여러개의 스레드가 하나의 크리티컬 섹션에 접근 가능하지만, Read하는 도중 값이 변경 되면 안된다. 위의 세 가지 사항 정도만 제외 한다면 rwlock은 mutex랑 비슷하다. 개념도 비슷하고, 사용법도 비슷하고, 하는 일도 비슷하다. rwlock의 장점은 read 작업에 있어서 여러개의 쓰레드가 서로 블록킹 하는.. 심리테스트 깜소로 부터 바톤을 이어 받았습니다.(http://blog.ggamsso.wo.tc/418) 이 문답을 하실 분이 아니라면 해답을 보셔도 좋습니다. 이 문답을 하실 분이라면 먼저 문제의 답을 스스로 내 본 다음 해답을 보시기 바랍니다. 문제1 : 지금 당신의 눈앞에 벌레가 있다고 상상해보자. 몇 마리가 있는가? - 셀수 없을만큼 문제2 : 정글 속을 지나가고 있는데 갑자기 어떤 동물이 튀어나왔다 어떤 동물일까? - 레오 문제3 : 지금 의자에 앉아서 다리를 꼬려고 한다. 어느 다리를 먼저 올리는가? - 오른쪽 문제4 : 버스를 타고 사파리 파크를 지나가고 있는데 사자가 고기를 미친듯이 뜯어 먹고 있는 것을 보았다. 기분이 어떤가? - 역시 고기는 육회가 최고! 문제5 : 보통 음료수를 따라 마실 때 컵에.. libevent and multithread /** libevet를 멀티 쓰레드 환경에서 사용코자 했는데, 이것이 생각 처럼 동작 하지 않았다. connection이 하나만 들어 왔을 때는 정상동작 했지만, 둘 이 상이되면서 부터는 event_dispatch() 에서 1을 리턴(set 되어 있는 이벤트 가 없다라는 의미)하면서 계속 종료 되었다. 혹시나 싶어 libevent의 멀티 쓰레드 환경에 대해 찾아 보니 아래와 같은 글이 있어 짧은 영어 실력이나마 번역을 해 보았다. 혹시나 누군가가 잘 못된 내용을 진실로 받아 들이고 그걸 다른 사람에게 진실인양 전파 한다면 세상에 잘못된 지식들이 판치게 되고, 지식을 추구하 는 사람들에게 있어 그것만큼 나쁜 일이 없다. 아래의 글 중 잘 못된 내용이 있다면 언제든지 kukuta@gmail.com으로 알 려.. 이전 1 ··· 38 39 40 41 42 43 44 다음