반응형

분류 전체보기 220

TCP Note #2 Gracefully Close(..)

From Chapter 6 내부구조, TCP/IP The Pocket Guide to TCP/IP Sockets C, MSDN closesocket function[winsock], 'Graceful Shutdown, Linger Options, and Socket Closure', NetworkProgramming For Microsoft Windows What? Gracefully Close란 TCP에서 4way-handshake를 정상으로 마친 그러니까 서로 FIN, ACK를 주고 받고 연결이 종료된 상태이다. Why Important? 이 Gracefully Close를 통하여 소켓의 close(..)를 호출한 쪽은 자신이 보내고자 하는 데이터가 정상적으로 상대편에 다 도착했음을 보장받는다. 이는..

TCP & UDP Note #1

From Chapter 6 내부구조, TCP/IP The Pocket Guide to TCP/IP Sockets C, MSDN, NetworkProgramming For Microsoft Windows Socket 소켓구조체 1) 내부의 소켓구조와 링크된 일종의 핸들(Handle) 2) 지역 및 원격 인터넷 주소와 포트, SendQueue, RecvQueue, TCP연결관련상태정보 TCP 1. Defensive Programming 1) Deadlock n bytes를 send(...)할 때, n=source SendQ size + destination RecvQ size + remained size n>source SendQ size + destination RecvQ size 클 경우 보낸 호스트는 ..

UDP, recvfrom()에서 WSAECONNRESET(10054) 에러 날 때...

recvfrom(...)에서 WSAECONNRESET(10054)에러가 나오면, 열라 황당하죠... 왜냐하면 10054의 의미는 ICMP Port Unreachable이라는 것인데, recvfrom은 내 소켓에서 데이터를 받는 것이니 왠? Unreachable? UDP에서 WSAECONNREST? WSAECONNRESET은 해당코드가 TCP에서의 에러일 떄의 의미를 이야기 하는 것이고 UDP소켓에서의 이유는 아래와 같이 MSDN에서 나와 있습니다. " On a UDP-datagram socket this error indicates a previous send operation resulted in an ICMP Port Unreachable message. " 뭐, 간단히 해석하자면 "먼저번 Send(..

TCP/IP에 대한 유용한 글 모음

TCP Segment: http://en.wikipedia.org/wiki/TCP_segment, http://www.linktionary.com/s/segment_tcp.html 자칫 햇갈릴 수도 있는 TCP Segment에 대한 정의가 나와 있는 글들... TCP Sliding Window: http://forgarden.tistory.com/113 TCP 슬라이딩 윈도우에 대한 설명이 쉽게 나와 있는 글... TCP Window Size의 크기에 따른 영향: http://forgarden.tistory.com/114 TCP의 Window Size의 크기가 성능에 어떤 영향을 미치는지 나와 있습니다.

[링크] 주요 소프트 및 패치 다운로드 (지속적 업데이트)

Office 2003 SP3: http://www.microsoft.com/downloads/details.aspx?familyid=E25B7049-3E13-433B-B9D2-5E3C1132F206&displaylang=ko Word, Excel 및 PowerPoint 2007 파일 형식용 Microsoft Office 호환 기능 팩: http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=941B3470-3AE9-4AEE-8F43-C6BB74CD1466 오피스XP, 2003에서 오피스2007 파일을 사용하게 해주는 호환기능팩입니다. Word, Excel 및 PowerPoint 2007 파일 형식용 Microsoft Office 호..

링크 2009.04.29

LUA Script

Lua는 가벼운 인터프린터 언어로 쉽고 가볍게 C/C++에 내장된(Embeded)다는 장점을 가지고 있으며, WOW의 유저UI용 스크립트 언어로도 유명하다. 많은 MMORPG용 서버엔진에서도 사용한다. 물론, 언어로는 메타, 멀티리턴값 같은 조금은 독특하고 머리아픈 기능도 가지고 있다. LUA v 5.1 Reference Manual http://www.lua.org/manual/5.1 루아 공식홈페이지 http://www.lua.org 루아 레드위키 http://www.redwiki.net/wiki/wiki.php/Lua 루아 사용자 모임 http://lua-users.org C# & Lua http://www.gamedev.net/reference/articles/article2275.asp http..

SetEvent(..) & 멀티쓰레드 버그

꽤나 재미있는 버그였다... int tst; //Thread#1 ... WaitForSingleObject(...); printf("%d", tst); ... //Thread#2 ... tst=3; SetEvent(...); tst=4; ... 이 상황에서 Thread#1이 Thread#2를 기다리다가 tst값을 찍을 경우, 찍히는 값은 3일까? 4일까? 이 코드는 전형적으로 시그널을 기다리는 코드로 Thread#1이 Thread#2의 시그널을 기다리고 있다. 그런데 중요한 것은 OS동작이다. 흔희 생각할수 있는, SetEvent(...) 호출한 후의 Context Switching은 바로 일어나지 않을 수도 있다. 이런경우 일정량 만큼 SetEvent(...) 이후의 코드가 실행되다가 Context S..

Win32 과연 어떤 Timer함수를 사용할 것인가?

이 글은 Code Project에 있는 Timers Tutorial을 정리한 것입니다. 우선, 윈도우는 윈도우 CE를 제외하면 리얼타임OS가 아닌 관계로 10ms와 같은 매우 작은 시간에 대한 정확한 처리를 요구하는 건 한계가 있답니다. (쥔장도 자세한 이유는 잘... 흠...) QueryPerformanceFrequency나 QueryPerformanceCounter와 같은 경우는 특정 시간 경과 후 이벤트를 처리하는 것이 주요 쓰임이 아니라 시간과 시간사이의 시간차를 계산하는 것이 주요 쓰임인 관계로 이 글에서는 언급되어 있지 않습니다. 반대로 말하면 시간과 시간사이의 차이를 정확히 측정하려면 QueryPerformanceFrequency를 사용하여야 겠죠? 1. Standard Win32 Timer..

First Chance Exception

SEH(Structured Exception Handler)가 처리하는 Structured Exception을 처리하는 과정에서 디버거가 제공해 주는 정보의 일종입니다. 제가 이해한 동작 메카니즘은 아래와 같습니다. 1. Exception 발생 2. 발생된 Exception 인식 3. First Chance Exception 메세지 발생 4. Exception Handling 5. if {Exception이 정상 처리?} 프로그램 계속 동작 else Second Chance Exception 메세지 발생 //Release모드로 컴파일되어서 작동시 프로그램 Crash를 의미함 내용을 읽다보면 이 API가 Win32API를 의미하는 것인지 유저가 만든 API를 의미하는 것인지 조금 모호하기는 합니다. 즉, ..

C++ 헤더파일에 선언할 수 있는 4가지 타입의 전역변수

최근에 헤더파일에서의 static 전역변수에 대한 포스트를 올렸다 지웠습니다. 생각지도 못한 버그를 만나 2시간이나 고생을 했기 때문이었는데, C/C++에서의 static 키워드는 여러모로 조심스러운 키워드인거 같습니다. 멀티쓰레드에서의 버그가능성까지... 이 글은 덕분에 테스트해 본 전역변수에 대하여 요약하여 놓은 것입니다. 참고로 테스트 환경은 Visual Studio 2008 sp1 입니다. object라는 클래스가 있다는 가정하에 헤더파일에 선언할 수 있는 4가지 타입의 전역변수는 아래와 같습니다. 1. object var; 2. static object var; 3. extern object var; //object var;라고 특정 cpp파일에 정의되어 있다고 가정합니다. 4. typedef ..

C++ 프로그래밍 2009.04.21

[STL] erase Story... beta

STL에서 가장 짜증나는 부분이 erase부분이 아닌가 싶다. erase와 remove의 차이점을 알아야 하고 거기에 몇 개 종류별 iterator의 erase 기법을 알아야 한다. 흠... 암기하기도 그렇고... 꽤나 귀찮은 것들 하나다. 그래서 찾아본 것을 정리하면 아래와 같습당... map's iterator erase 방법 // 1. 특정 조건에 따라 제거 map mp; for(map::iterator i=mp.begin(); i != mp.end(); ) { if( {조건문} ) { mp.erase( i++ ); } else { ++i; } } // 2. 전체 제거 map mp; for(map::iterator i=mp.begin(); i != mp.end(); ) { mp.erase( i++ ..

C++ 프로그래밍 2009.04.21

Lua R6034 Runtime Error in Visual Studio 2008 in Vista

증상 XP에서 잘 실행되던 소스가 Vista로 옮겨서 컴파일 하고 실행을 하려고 하니 R6034에러가 났다. 원인 Visual Studio 2008에서는 CRT(C RunTime, 일반적으로 컴파일러들이 자동으로 링크하는 기본 C라이브러리를 말함당)를 9.0버전을 사용한다. 하지만 내가 만들고 있던 루아스크립트 엔진이 참조하는 lua5.1.dll은 Visual Studio 2005의 CRT인 8.0버전을 사용한다. 뭐, XP에서는 그냥 루아 5.1버전과 같이 딸려오는 msvcr80.dll을 사용하면 되지만 Vista에서는 잘못된 CRT를 로드했다는 에러를 낸다. 아마도 Vista에선가, .Net에선가 dll 관리 정책의 변화떄문인 듯 보인다. 소위 말하여 WinSxS라는 거... 실행파일 (참조)-> L..

[링크] 음악관련 방송 사이트

http://home.ebs.co.kr/space/ http://ebs-space.co.kr EBS Space 공감 내가 우리나라에서 가장 좋아하는 음악프로그램으로 진정 많은 실력있는 언더뮤지션의 EBS 콘서트를 볼 수 있다. 솔직히 근래의 한국 음악계는 어떻게 보면 댄스음악 장르가 아니라면 언더뮤지션쪽의 사운드가 더욱 풍부하고 뛰어난 듯 하다. 뭐랄까, 힙합클럽이 장악하기 전 홍대 클럽의 영향이라고나 할까... 좀 더 이야기 하자면 대중적인 KBS 러브레터, 중년들을 위한 70·80 콘서트와는 차이를 보이며 언더적 색채를 내는 최고의 라이브 프로그램인 듯... 배철수 음악캠프(http://www.imbc.com/broad/radio/fm4u/musiccamp/index.html) 최근에는 서태지 출연으..

링크 2009.04.14
반응형