검색결과 리스트
Win32에 해당되는 글 5건
- 2013.01.07 [.Net] pinvoke.net
- 2009.09.07 Win32 네트워크 프로그래밍
- 2008.09.16 InternetSetOption의 Timeout 설정 버그
- 2008.07.21 WM_DESTROY 메세지
- 2008.07.14 유용한 NETSTAT 명령어
글
링크 : http://www.pinvoke.net/index.aspx
win32 API 를 .Net에서 사용할때 .Net에 맞게 DllImport를 해야 하는데 그 변환 문법이 만만치 않다.
각 함수별로 잘 정리되어 있는 사이트
* 사이트 메인 화면을 보면 Visual Studio 2010, 2012 Add-In 프로그램도 존재한다. Winform으로 개발시 유용할듯
'.Net > .Net' 카테고리의 다른 글
[.Net] Aspect Oriented Programming With .Net (0) | 2013.01.14 |
---|---|
[.Net] 웹 자동화 구현 클래스 (0) | 2013.01.09 |
[.Net] Windows 서비스 응용 프로그램 (0) | 2012.12.07 |
[.Net] Zlib Wrapper (0) | 2012.05.22 |
[.Net] Inter-Process Communication (0) | 2012.04.17 |
트랙백
댓글
글
1. 제 목 : Win32 네트워크 프로그래밍
2. 출판사 : 대림
3. 저 자 : Ralph Davis 저 / 김승태 역
4. 가 격 : 29,000원
5. 난이도 : 중급 (☆★★★☆)
6. 판 매 : 품 절
7. 평 가 : ★★★☆☆
네트워크 책이지만 시스템에 대한 설명도 많은 책입니다.
오래된 책이라서 내용이 조금 구식(?)이지만 내용의 질만큼은 좋아서 초보분들이
개념잡기 좋습니다. 번역도 대체적으로 이해하는데 무리 없이 잘 번역되어 있습니다.
특히 Win32 API를 이용해서 클래스로 만든 CWin32Exception, COverlappedFile은 바로 실무에서
사용할수 있습니다.
'Books' 카테고리의 다른 글
제프리 리처의 Windows VIA C/C++ (0) | 2009.09.14 |
---|---|
자바스크립트 완벽 가이드 (JavaScript The Definitive Guide 5/E) (0) | 2009.09.12 |
터보C정복 (0) | 2009.09.06 |
Programming Windows with MFC Second Edition (0) | 2009.09.03 |
Microsoft Visual C++ Object-Oriented Programming (0) | 2009.09.02 |
트랙백
댓글
글
동기화 모드로 InternetOpenUrl 함수를 사용하다 보니 블러킹 상태에 대한
조치가 필요해서 InternetSetOption 함수의 Timeout 인자를 설정했지만
안먹더군요... 그래서 인터넷을 뒤진 결과 MS 버그 ㅡㅡ;
결국 MS에서 알려준 방법대로 스레드로 처리하긴 했습니다.
뭐 이건 배보다 배꼽이 더큰 경우라고 할 수 있네요...
#include "windows.h" #include "wininet.h" #include "iostream.h" DWORD WINAPI WorkerFunction( LPVOID ); HINTERNET g_hOpen, g_hConnect; typedef struct { CHAR* pHost; CHAR* pUser; CHAR* pPass; } PARM; void main() { CHAR szHost[] = "localhost"; CHAR szUser[] = "JoeB"; CHAR szPass[] = "test"; CHAR szLocalFile[] = "localfile"; CHAR szRemoteFile[] = "remotefile"; DWORD dwExitCode; DWORD dwTimeout; PARM threadParm; g_hOpen = 0; if ( !( g_hOpen = InternetOpen ( "FTP sample", LOCAL_INTERNET_ACCESS, NULL, 0, 0 ) ) ) { cerr << "Error on InternetOpen: " << GetLastError() << endl; return ; } // Create a worker thread HANDLE hThread; DWORD dwThreadID; threadParm.pHost = szHost; threadParm.pUser = szUser; threadParm.pPass = szPass; hThread = CreateThread( NULL, // Pointer to thread security attributes 0, // Initial thread stack size, in bytes WorkerFunction, // Pointer to thread function &threadParm, // The argument for the new thread 0, // Creation flags &dwThreadID // Pointer to returned thread identifier ); // Wait for the call to InternetConnect in worker function to complete dwTimeout = 5000; // in milliseconds if ( WaitForSingleObject ( hThread, dwTimeout ) == WAIT_TIMEOUT ) { cout << "Can not connect to server in " << dwTimeout << " milliseconds" << endl; if ( g_hOpen ) InternetCloseHandle ( g_hOpen ); // Wait until the worker thread exits WaitForSingleObject ( hThread, INFINITE ); cout << "Thread has exited" << endl; return ; } // The state of the specified object (thread) is signaled dwExitCode = 0; if ( !GetExitCodeThread( hThread, &dwExitCode ) ) { cerr << "Error on GetExitCodeThread: " << GetLastError() << endl; return ; } CloseHandle (hThread); if ( dwExitCode ) // Worker function failed return ; if ( !FtpGetFile ( g_hConnect, szRemoteFile, szLocalFile, FALSE,INTERNET_FLAG_RELOAD, FTP_TRANSFER_TYPE_ASCII, 0 ) ) { cerr << "Error on FtpGetFile: " << GetLastError() << endl; return ; } if ( g_hConnect ) InternetCloseHandle( g_hConnect ); if ( g_hOpen ) InternetCloseHandle( g_hOpen ); return ; } /////////////////// WorkerFunction ////////////////////// DWORD WINAPI WorkerFunction( IN LPVOID vThreadParm ) /* Purpose: Call InternetConnect to establish a FTP session Arguments: vThreadParm - points to PARM passed to thread Returns: returns 0 */ { PARM* pThreadParm; // Initialize local pointer to void pointer passed to thread pThreadParm = (PARM*)vThreadParm; g_hConnect = 0; if ( !( g_hConnect = InternetConnect ( g_hOpen, pThreadParm->pHost, INTERNET_INVALID_PORT_NUMBER, pThreadParm->pUser, pThreadParm->pPass, INTERNET_SERVICE_FTP, 0, 0 ) ) ) { cerr << "Error on InternetConnnect: " << GetLastError() << endl; return 1; // failure } return 0; // success }
원본은 요기 ↓
http://support.microsoft.com/default.aspx?scid=kb;en-us;224318
'OS > Windows' 카테고리의 다른 글
Release에서 디버깅 하기 ... (0) | 2008.11.21 |
---|---|
GetExitCodeThread 로 스레드의 상태를 알아보기 (0) | 2008.09.27 |
WM_DESTROY 메세지 (0) | 2008.07.21 |
초보 DLL 사용하기 (0) | 2008.02.21 |
오류코드를 오류메시지로 바꿔주는 FormatMessage() 함수 (0) | 2008.02.20 |
트랙백
댓글
글
WM_DESTROY 메세지는 윈도우가 파괴될때 발생합니다.
윈도우가 파괴되는 경우는 Alt+F4, 종료버튼을 누를때 입니다.
특이한 점은 윈도우 구조체가 메모리 해제되고 나서 이 메세지가 발생합니다.
따라서 WM_DESTROY에서 DC를 얻어서 그리기를 시도하면 실패합니다.
윈도우 종료시에 마지막으로 그리기 작업이 필요하다면 WM_CLOSE에서
해주셔야 합니다. 이 메세지는 윈도우 구조체를 메모리 해제하기 바로 전에
발생하는 메세지 입니다. 따라서 DC를 정상적으로 얻을수 있습니다.
WM_DESTROY는 DC와 연관되지 않은 데이터 정리 작업을 하기 좋은 곳 입니다.
'OS > Windows' 카테고리의 다른 글
Release에서 디버깅 하기 ... (0) | 2008.11.21 |
---|---|
GetExitCodeThread 로 스레드의 상태를 알아보기 (0) | 2008.09.27 |
InternetSetOption의 Timeout 설정 버그 (0) | 2008.09.16 |
초보 DLL 사용하기 (0) | 2008.02.21 |
오류코드를 오류메시지로 바꿔주는 FormatMessage() 함수 (0) | 2008.02.20 |
트랙백
댓글
글
소켓프로그램을 개발할때 포트 확인시 유용합니다.
LISTENNING | 대기상태인 포트 |
ESTABLISHED | 연결상태인 포트 |
TIME-WAIT | 연결종료 중인 포트 (TCP/IP의 TIME-WAIT 상태) |
CLOSED | 연결 종료된 포트 |
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p 프로토콜] [-r] [-s] [-t] [-v] [시간] | |
-a | 모든 연결 및 수신 대기 포트를 표시합니다. |
-b | 각 연결 또는 수신 대기 포트를 만드는 데 관련된 실행 프로그램을 |
표시합니다. 잘 알려진 실행 프로그램에서 여러 독립 구성 요소를 | |
호스팅하는 경우에는 연결 또는 수신 대기 포트를 만드는 데 | |
관련된 구성 요소의 시퀀스가 표시됩니다. 이런 경우에는 | |
실행 프로그램 이름이 아래쪽 대괄호 안에 표시되어 있고 위에는 | |
TCP/IP에 도달할 때까지 호출된 구성 요소가 표시되어 있습니다. | |
이 옵션은 시간이 오래 걸릴 수 있으며 사용 권한이 없으면 | |
실패합니다. | |
-e | 이더넷 통계를 표시합니다. 이 옵션은 -s 옵션과 같이 사용될 |
수 있습니다. | |
-n | 주소 및 포트 번호를 숫자 형식으로 표시합니다. |
-o | 각 연결의 소유자 프로세스 ID를 표시합니다. |
-p 프로토콜 | 지정한 프로토콜에 해당되는 연결을 표시합니다. 프로토콜은 |
TCP, UDP, TCPv6 또는 UDPv6 중 하나입니다. -s 옵션과 함께 | |
사용하여 프로토콜별 통계를 표시할 경우 프로토콜은 IP, IPv6, | |
ICMP, ICMPv6, TCP, TCPv6, UDP 또는 UDPv6 중 하나입니다. | |
-r | 라우팅 테이블을 표시합니다. |
-s | 프로토콜별로 통계를 표시합니다. 기본값으로 IP, IPv6, ICMP, |
ICMPv6, TCP, TCPv6, UDP 및 UDPv6에 관한 통계를 표시합니다. | |
기본값의 하위 집합을 지정하는 데 -p 옵션을 사용할 수 있습니다. | |
-t | 현재의 연결 오프로드 상태를 표시합니다. |
-v | -b 옵션과 함께 사용하면 모든 실행 프로그램에 대한 연결 |
또는 수신 대기 포트를 만드는 데 관련된 구성 요소의 시퀀스를 | |
표시합니다. |
'Network' 카테고리의 다른 글
[KT EGG] 스트롱에그 KWD-B2600 (0) | 2012.09.20 |
---|---|
[Ping] KT 핑 테스트 (0) | 2012.06.30 |
[Util] Ping Test Easy (0) | 2012.04.06 |
아이피 위치 확인 하는 방법 (0) | 2012.02.07 |
hosts 파일 수정 (0) | 2011.09.22 |
RECENT COMMENT