Platform
-
Overlapped(Asynchronous) IO - Win32Platform/소켓 2009. 4. 21. 20:52
IO 완료를 이벤트나 완료 루틴으로 통보받을 수 있다. Alertable State // IO 루틴을 호출한 스레드?? SleepEx() WaitForSingleObjectEx() WaitForMultipleObjectsEx() MsgWaitForMultipleObjectsEx() SignalObjectAndWait() AcceptEx() GetAcceptExSockaddrs() WSASend() 오버랩드 IO를 수행하려면 여섯번 째(lpOverlapped), 일곱번 째(lpCompletionROUTINE) 인자를 사용한다. WSASendTo() WSARecv() WSARecvFrom() WSAGetOverlappedResult() // // This is our per I/O data. It descr..
-
WSAEventSelect() - IO 멀티플렉싱(Win32)Platform/소켓 2009. 4. 18. 22:13
WSACreateEvent() WSACloseEvent() WSAResetEvent() WSAEventSelect() IO 호출에 블록되기 전에 소켓 이벤트를 이벤트로 비동기적으로 통보 받을 수 있다. 비동기 데이타 송수신이 제공되는 것은 아니다. FD_CLOSE FD_ACCEPT FD_READ FD_WRITE WaitForSingleObject() WaitForMultipleObjects() MsgWaitForMultipleObjects() SignalObjectAndWait() WSAWaitForMultipleEvents() #include #include #include #define BUFSIZE 100 void CompressSockets(SOCKET* hSockArray, int omitInd..
-
WSAAsyncSelect() - IO 멀티플렉싱(Win32)Platform/소켓 2009. 4. 18. 17:25
WSAAsyncSelect() 소켓 이벤트를 윈도우 메시지로 비동기적으로 통보 받을 수 있기 때문에 IO 호출에 블록되는 것을 피할 수 있다. 비동기 데이타 송수신이 제공되는 것은 아니다. FD_CLOSE FD_ACCEPT FD_READ FD_WRITE // // Function: FindSocketObj // // Description: // Search through the lsit of socket objects for the object matching // the socket handle supplied. Return the object if found; NULL otherwise. // SOCKET_OBJ *FindSocketObj(SOCKET s) { SOCKET_OBJ *ptr=NULL; ..
-
-
FTP - Win32Platform/소켓 2009. 2. 23. 23:05
InternetOpen() INTERNET_OPEN_TYPE_PRECONFIG InternetConnect() INTERNET_DEFAULT_FTP_PORT INTERNET_SERVICE_FTP INTERNET_FLAG_PASSIVE InternetCloseHandle() FtpSetCurrentDirectory() FtpFindFirstFile() InternetFindNextFile() FtpOpenFile() GENERIC_READ GENERIC_WRITE FTP_TRANSFER_TYPE_BINARY InternetCloseHandle() InternetWriteFile() InternetReadFile() FtpDeleteFile() FtpRenameFile() FtpCreateDirectory(..
-
URL 파싱 - Win32Platform/소켓 2009. 2. 22. 17:38
void ParseURL(const CString &url_, CString &server, CString &filepath, CString &filename) { int n; CString url = url_; if (url.Left(7) == "http://") url = url.Mid(7); n = url.Find('/'); server = url.Left(n); filepath = url.Mid(n); n = filepath.ReverseFind('/'); filename = filepath.Right(filepath.GetLength()-(n+1)); } #include #include class URLParse { URL_COMPONENTS m_urlcomponent; char m_szExtr..
-
동기화 - Win32Platform/IPC 2009. 2. 14. 22:05
race condition 자원을 공유시 경쟁 상황 교착 상태 두 개 이상의 동기화 오브젝트들을 획득시 발생 // ??? 회피 방법 시도하고 물러나기(try and back off) 모든 스레드들이 동일한 순서로 동기화 오브젝트들을 얻고 그 반대 순서로 해제 WaitForMultipleObjects() 다른 스레드(프로세스)의 종료를 대기 WaitForSingleObject() WaitForMultipleObjects() MAXIMUM_WAIT_OBJECTS c.f. WaitForInputIdle() int _tmain (DWORD argc, LPTSTR argv []) /* Create a separate process to search each file on the command line. Each ..