검색결과 리스트
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