본문 바로가기

Developement/C/C++

(71)
리눅스에서 빠르게 TCP socket 서버 찾기. 리눅스에서 자신의 IP 영역대에서 (A.B.C.n, n = 1~자기자신~255) 다른 서버가 있는지 찾기 위해서는 여러 방법이 있긴 하겠지만, 대부분 이 방법으로 찾는게 아닐까 합니다. 아래 코드는 해당 ip 에 TCP socket 이 열려 있는지 찾는 간단한 방법 으로 실제 AnyStreaming Client 에서도 아래와 같은 방법으로 (물론 Windows용으로 바꾼 코드) AnyStreaming 을 찾습니다. 실제론 FD_ISSET() 이후에 socket 을 다시 blocked 로 바꾼 다음 send() 를 통해 특정 명령이 전달 되는지 까지 검사하면 더 좋을 듯 합니다. 이 방법은 TCP socket 의 connect() 함수가 blocking 으로 동작 하는것을 감안해서 만든 날림 코드지만 꽤 ..
리눅스내 현재 접속 ip 알기. 리눅스나, 임베디드 리눅스 내에서 현재 연결된 장치에 따라 ip 를 알고 싶을 때가 있다, 이럴때 아래 코드를 사용할 수 있다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include bool getmyip( const char* devname, struct in_addr* addr ) { struct ifreq ifr; int fdSockTest = -1; fdSockTest = socket( AF_INET, SOCK_DGRAM, IPPROTO_IP ); if ( fdSockTest >= 0 ) { strcpy( ifr.ifr_name..
AnyStreaming Win32 Client ... 이제 CES 까지 한주 좀 더 남았습니다. 미국 까지 가서 데모 신나게 돌려야 하는 관계로 (나중에 source code 공개로 해야 하는 이유도 있지만) 급하게 2주가량 만에 만든 Windows 용 DirectX 가속 클라이언트를 완성 하긴 했습니다. 공개는 어차피 libffmpeg 쓴거라 공개 해야 하므로 나중에 github 나 bitbucket 에 올라가게 될지라 따로 올릴 필요는 없어 보입니다. DirectX 의 D2D 와 DSound 를 쓰는데, 이게 DirectX 10 부터 2D 지원이라고 하는군요. 일단 D2D 사용 하고 있어서 Windows7 부터나 구동 될 듯 합니다만, 100% MinGW-W64 로만 빌드 한 거라 MFC 처럼 지저분한 뭔가는 없을 듯 합니다. 소스가 오픈 되면 ffmp..
MinGW-W64 용 DirectInput 소스 (키보드,마우스,조이스틱) MinGW-w64 프로젝트 부터 DirectX 관련 SDK 가 포함 되어 있으므로 윈도우 어플 개발에 매우 편리함을 얻을 수 있습니다만, MFC 처럼 뭔가 꽁꽁 묶여져 있는거 찾기가 사실 어렵다 보니 직접 만들어 써야 하는게 많은건 사실 입니다. 대신 쾌적함을 얻을 수 있는건 덤 이지만 ... 그래서 제가 진행 중인 프로젝트 중에 DirectX 의 2D, input 을 가져다 쓰면서 좀 더 편리하게 써 보고자 만들었던 것을 공유 하고자 합니다. 사용은 간단 합니다. 먼저 현재 사용되는 윈도우에 생성 부분 쪽에 InitDirectInput() 를 사용하여 Dinput 을 초기화 합니다. 이떄 반환되는 값은 HRESULT 가 아니라 DXINPUT_INIT_RESULT_KEYBOARD, DXINPUT_INIT..
Win32 개발을 위한 Resource Editor 1.6.6 현재 이 프로그램 홈페이지에서 설치본을 내려 받으면 100% 악독한 iStartWeb 뭐시기 malware 에 걸립니다. 참고 URL = http://www.resedit.net/ 몇일 전 이걸 내려 받았다가 저 malware 설치 된걸 지우느라 개고생 한걸 생각 해서 단순 압축본을 올립니다. 저작권은 resedit.net 에 있으며, 리패키징 금지 등을 개시 하지 않았으므로 일단 올려 두도록 합니다. 절대 해당 홈페이지에서 설치본을 받지 마시기 바랍니다. 개발자가 설치본에 악성 malware 를 넣은듯 한데, 아무리 돈이 궁해도 그렇지 내려 받는 사람들에게 독을 파는건 아닌 듯 합니다. 그래서 문제가 없는 바이너리를 설치 후 그대로 압축 해서 아래에 올립니다. 원래 설치본에 있는 malware 는 감염..
DirectX/Dsound 용 mp3 to wave 디코더, MinGW용 소스 & 라이브러리 * 기존 v2 소스에 버그가 있어서 업데이트 되었습니다. 현재 v3, 큰 파일을 모두 디코딩 가능. 이 소스는 MinGW (gcc) 에서 DirectX sound (Dsound) 를 사용할 때, MP3 를 음원으로 사용할 경우 유용하게 쓸 수 있는 라이브러리 입니다. 원래 소스는 ffmpeg 에 있는 것을 사용한 상태 이며, 원본 소스가 C 용으로 만들어 져 있었기 때문에 변경 없이 쓰도록 만든 상태 입니다. ( libmp3wav 라이브러리 소스는 g++ 로 컴파일 불가 ) 사용 가능한 컴파일러 제한: i686-posix-dwarf-rev3, Built by MinGW-W64 project) 4.9.2 mp3towave 만 사용할 경우, libmp3wave.a 와 mp3wave.h 파일 압축 C++ 에서..
DirectX 2D 창 메뉴가 안뜨면 창을 옮기리. 부제: DirectX 2D 와 DSound 함께 쓰기 @ Windows7, 8.x 저번 주 에 있었던 DirectX 2D 를 좀 더 개선 하여 다음과 같이 구현 하였습니다.PNG 이미지를 가져와서 D2D 이미지(텍스쳐)로 사용 하도록 함.Dsound 로 WAV 파일을 가져와 출력 하도록함, 백그라운드와 클릭 시 나오는 소리 2가지. 상단 30px 안에서 마우스 왼쪽 클릭 해서 끌면 창 전체가 이동 하도록 함. 렌더링을 thread 로 하도록 함.약간의 UI 적인 요소. 별 대단한 기법이 들어 간 것은 아닙니다만, DirectX 2D 와 Dsound 겹쳐서 쓰는 예제들이 너무 없어서 직접 병합 해 보았습니다. 소스는 MinGW-W64 에서 빌드 되도록 되어 있으며, Code::Blocks 의 프로젝트를 사..
DirectX 2D 창모드는 안되는 건가... H/W 가속을 통한 각 Frame 영상을 화면에다가 그리려고 하니 어찌 DirectDraw 는 너무 오래된 API set 이라 DirectX 2D 를 쓰려고 노력 중 입니다. 다만, 대부분 2D 가속을 쓰는 게임들이 창모드로 실행 되는 방법을 알기가 어렵다는 난해한 점에 허우적 거리고 있습니다만 ... 이 방법을 찾기 위해 좀 노가다를 해야 할 듯 하네요. GDI+ 를 쓰느니 이걸 써야 겠는데 ... GDI 에 2K 이상으로 크기가 리사이즈 된 이미지를 그리려니 이 방법 말고는 답이 없어 보입니다. 아... DirectX ... 손도 대기 싫었는데 ... 빌드 가능 환경 = Code::Blocks + MinGW-W64 (DirectX API 포함된 상태)