본문 바로가기

Programming/Tips(C++,C#)143

02/03 - TCP/IP를 이용한 파일 송/수신 *스크립트도 패킷에 함께 날라온다.! *패킷구조체 (file송/수신용) typedef struct _packet{ WORD MajorVer, MinVer; //버전을 담아두면 하위호환시에 유리하다. char szCommand[16]; //명령용(int size두면 좋음.. 패킷의크기를알도록) int sizefile; //수신파일사이즈 char file; //파일임 } *서버짤때 고려할 사항 안정성 > 성능향상 > 서비스의 질 *파일 송수신시 ::TransmitFile()메소드 사용하자. 다해준다. ㅋㅋㅋ *IOCP는 처음에 등록하기가 어렵지만, 한번 등록해두고나면 무진장 편하다. *TCP Echo Server잘 보자. ㅋ *IOCP에서 중요한것을 스레드가 할일을 잘게 쪼개라 그렇지않다면 문제생길수 있다... 2009. 2. 3.
02/02 - CSocket / CAsyncSocket and etc *네트워크 프로그래밍 : 파일 송수신되는 채팅서버 개발할 수 있으면 된다. *CSocket을 만들어서 거기에 HTTP요청헤더를 같이해서 보내면... 해당 페이지가 처리되어 돌아온다. *IOCP : 02/03에 한다!. 2009. 2. 2.
02/02 - Async version *Client Connect시 Thread 실행됨. //스레드 UINT ThreadIOEvent(LPVOID pParam){ CString tmp = _T(""); char szBuffer[U_BUFSIZE]; //create event WSAEVENT hEvent = ::WSACreateEvent(); //registry event if(::WSAEventSelect(g_hSocket,hEvent,FD_READ|FD_CLOSE) == SOCK_ERROR){ tmp.Format(_T("WSAEventSelect Error. [Error Code:%d]"),::WSAGetLastError()); AfxMessageBox(tmp); ::WSACloseEvent(hEvent); return 0; } //wai.. 2009. 2. 2.
02/02 - tcp/ip network programming - client src void CTCPEchoClientDlg::OnButtonConnectServer() { // TODO: Add your control notification handler code here //create socket and connect CString tmp = _T(""); //create socket g_hSocket = ::socket(PF_INET,SOCK_STREAM,0); if( g_hSocket == INVALID_SOCKET){ tmp.Format(_T("Fail to create socket"),::WSAGetLastError()); AfxMessageBox(tmp); return; } //create socket information (bind) SOCKADDR_IN SockAddr.. 2009. 2. 2.
0202 - TCP/IP Network Programming * TCP/IP에서 클라이언트가 서버에 요청하여 접속함. *윈도우에서 네트워킹 사용하기 (수동버전) * 게임접속중에 리셋키가 눌리면 서버는 감지를 못한다. 가능한 판단기준. 1. 좀비를 결정하는 루틴을 잘해야한다. 2. 중복된세션이 생겼다. 기존세션을 끊는것이 우선적이다. 물론 기존세션에 알려주어야한다. 3. 이러한 중복세션이 빈번하면 일시적인 블럭을 걸어준다.(해킹가능성고려) 4. 서버는 우선 안정성이 최고이다. //rawsocket : SOCKET_RAW임.. 근데 윈도우에서 잘 안쓰임 //----StdAfx.h에서 #include //확장된 기능을 사용한다. #pragma comment(lib, "Ws2_32") //----- App에서 넣어야할 코드 InitInstance()에서{ CString .. 2009. 2. 2.
0130 - Network프로그래밍 *OSI 7Layer기준 사용자모드 -------------------------- 커널 4계층(TCP) = 포트번호 외부로 전송될 때 일어난다. NAT의 특성때문에 공유기환경에서 파일전송등의 상황을 생각해보자. 파일전송은 실제로 보내는것이 아니라 포트를 열어두고(송신측), 반대쪽(수신측)이 접속하는거다.. 라우팅테이블에있는가? *사설망간의 통신을 고려해야한다. *MSN백서 2009. 1. 30.
728x90