프로그래밍/네트워크 프로그래밍
-
파일패치 서버프로그래밍/네트워크 프로그래밍 2016. 10. 12. 06:41
클라이언트와 서버를 이용한 간단한 파일패치서버패치목록파일들을 이용한 테스트파일목록이 바꼈을 경우 서버로 데이터를 전송해서관련 파일들을 전송한다.C/C++소켓서버프로그래밍 클라,업데이트서버 개발중인 프로젝트에서 클라이언트 업데이트 시스템이 필요해졌다. 업데이트 되는 파일만 새롭게 받게 한다면 편할 테지만 큰 파일의 용량은 600MB가 넘었고, 서버에 차지하는 용량과 트래픽도 부담이 되었다.그리하여 이전 버전과 새로운 버전의 Binary data 차이점(Patch file)만을 추출 하여 이를 서버에 업로드 하고, 유저는 해당 Patch file 만을 받아 이전 버전의 파일 + 받은 Patch file 을 이용하여 새로운 버전의 파일을 생성 해내는 방식으로 업데이트 시스템을 만들기로 하였다.처음부터 Bina..
-
html와 Node.js 웹소켓서버프로그래밍/네트워크 프로그래밍 2016. 10. 12. 06:11
유니티클라이언트와 Node.js서버를 이용해서 게임서버구현 Node.js웹서버구현후 클라이언트2개 띄워서 테스트 마우스로 드래그 해서 두클라이언트의 Object가 같은 위치로 움직이게 된다. 현재 하나의 컴퓨터에서 두개의 창을 띄어놨기 때문에 활성화 되야 움직이지만 컴퓨터하나에 클라이언트를 각각 띄우면 바로바로 같이 움직이게 된다. 사용기술 C# Unity3D Node.js 서버 VisualStudio2015 TTP는 무상태 프로토콜(stateless protocol)으로 어떠한 이전 요청과도 무관한 각각의 요청을 독립적인 트랜잭션으로 취급하는 통신 프로토콜이다. 이러한 HTTP의 한계에서 벗어나 Node.js에서 손쉽게 Real-time communication(RTC, 실시간 양방향 통신) 웹 애플리..
-
IOCP게임서버 동기화 패킷처리프로그래밍/네트워크 프로그래밍 2016. 10. 12. 06:02
윈도우로 c++게임서버를 만들고 api정도에서 움직임 처리를 패킷으로 처리하는 포트폴리오입니다.클라이언트는 2개만 띄워서 테스트를 하였고 많은 패킷을 받아서 빠르게 처리를 하는 서버를구현하는데 목적을 두었습니다.IOCP이용해서 게임서버를 만들었습니다. 클라이언트 C++서버 C++Winsock VisualStudio2015 ,IOCP,c/c++ NetLIS ServerManual 0. NetLIS 서버 프로그램 소개.서버프로그램 NetLIS는 IOCP를 사용한 멀티 쓰레드 환경의 서버 프로그램입니다.코드생성을 하실 때 다중쓰레드(/Mtd)를 사용하여 주십시오.IOCP를 사용하였으므로 XP이하의 운영체제에서는구동이 불가능 합니다.함수호출에 따라서 서버기능을 수행하기도하고 클라이언트 기능을 수행하기도 합니다...
-
[포트폴리오]리니지 네트워크프로그래밍/네트워크 프로그래밍 2014. 7. 5. 14:55
윈소켓을 사용한 네트워크 프로그램 소켓 SELECT 모델을 사용해서 클라이언트와 서버통신을 했습니다. 위 동영상은 간단하게 클라이언트2개만 띄워서 테스트했습니다. 서버는 윈도우 메시지를 사용해서 만들었습니다. 서버 주소만 정확히 적어주면 다른 컴퓨터에서도 접속가능합니다. 간단하게 채팅서버만 구현하였습니다. Winsock VisualStudio2008 DirectX9.0 모든 책이 그런 것은 아마 아니겠지만 (사실 아닐꺼라고 믿고 싶다) 대부분 기초적인 네트웍 프로그래밍 – 소켓 사용, Win 32 혹은 소수지만 버클리 소켓 사용 – 이나 단순한 수준의 멀티스레드 프로그래밍에 그 내용 중 상당량을 소진한다. 그리고 정작 중요한 modern한 I/O 모델을 이용한 서버 프로그래밍에 관한 설명은 정말이지 미흡..
-
게임서버 만들기 3프로그래밍/네트워크 프로그래밍 2014. 6. 25. 19:29
#ifndef__CompletionHandler_H #define __CompletionHandler_H #include "WorkerThread.h" class CompletionHandler { public: static CompletionHandler* getInstance(); static void releaseInstance(); bool initialize(); HANDLE getWorkerIOCPHandle(); bool addHandleToIOCP(HANDLE handle, DWORD keyValue); private: CompletionHandler(void); virtual ~CompletionHandler(void); static CompletionHandler* selfInstanc..
-
서버만들기 2프로그래밍/네트워크 프로그래밍 2014. 6. 25. 19:04
#ifndef __Acceptor_H #define __Acceptor_H #include #include class Acceptor:public Thread { public: Acceptor(); virtual ~Acceptor(); virtual void run(); bool initialize(char* ipAddr, int portNo); private: static boolthreadLoop; cpp::net::ServerSocket serverSocket; }; #endif #include "Acceptor.h" Acceptor::Acceptor(void) { } Acceptor::~Acceptor(void) { threadLoop = false; WaitForSingleObject(handl..
-
게임서버 만들기-1프로그래밍/네트워크 프로그래밍 2014. 6. 25. 14:22
#ifndef __Entry_H #define __Entry_H #include #include #include "Acceptor.h" class Entry { public: static Entry*getInstance(); static voidreleaseInstance(); boolinitialize(); voidjoin(); private: Entry(); virtual ~Entry(); boolcreateSocket(); staticEntry*selfInstance; Acceptor acceptor; }; #endif #include "Entry.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, ..
-
TCPClient프로그래밍/네트워크 프로그래밍 2014. 6. 12. 03:27
#include #include void main() { WSADATA wsaData; SOCKET socketConnect; struct sockaddr_in serverAddr; ::WSAStartup(0x202, & wsaData); socketConnect = ::socket(AF_INET, SOCK_STREAM,IPPROTO_TCP); if(socketConnect == INVALID_SOCKET) { printf("Cannnot create socket !!\n"); return; } // 접속할 서버의 정보를 설정한다. ::memset(&serverAddr,0,sizeof(serverAddr)); serverAddr.sin_family= AF_INET; serverAddr.sin_addr.s..