프로젝트 진행 현황
NEXTDAY소프트월드(I) 서버

넥스트데이는 DB연동 온라인 그래픽 시뮬레이션이므로, 대형서버를 제작해야합니다.

NEXTDAY(I)의 개발언어는 Basic입니다. 단일개발 비중이 높아서 다른언어는 엄두가안납니다ㅎㅎ
하지만 역시 VB는 이벤트처리방식으로 객체처리가 까다롭기 때문에 꾀나 고전입니다.

대형 서버를 만들면서 가장고민되는것은 역시 소켓배열인데요..

사실 비주얼베이직의 윈속(Winsock)소켓 컨트롤은 성능이 별로 안좋습니다. 물론 단일 통신은 아무문제 없지만 소켓 배열이 수십개 넘어서는 서버에는 말이달라지죠..특히 패킷밀리는게..
그래서 소규모 넷플을 염두해두고, 서버당 접속자수는 수십명을 규모로 설계하였습니다.
(사실 그이상 용량이 필요할 거 같지 않습니다 ㅎ)

어느정도 모양이 갖춰진 대형 서버 구동 모습입니다.

사실 본인도 처음만드는 대형 소켓배열 서버이므로ㅎㅎ, 별 고민없이 공개 합니다. 하는일은 보시듯, 각종 스레드가 동작하고, 클라이언트의 패킷을 집중하며, 처리, 전송합니다.

DB는 MS표준 데이터베이스 mdb를 씁니다. 소규모 넷플 형태이므로 거창하게 ADO/DAO등을 쓸 이유가 없습니다. 그러나 워낙 시나리오스케일때문에 계정Record당 필드값이 굉장히 많습니다. 나중에 패킷이 밀리지않을까 걱정되네요..ㅠ

물론 사용자의 계정 ID 정보는 암호화되어 전송하고, 저장됩니다. 스샷 버전에서는 암호화가 적용되지 않았지만, 현재 클라이언트에서 보내는 패킷에서 부터 암호화를 진행하여 복호화 과정을 거치지않으면 DB상에서 저라도 사용자의 계정정보를 알 수 없습니다.^^

클라이언트는 현재 시험단계이므로, 이렇다할 인터페이스를 갖추지 못했네요. 그래도 서버와 통신하여 계정생성, 아이디검사, 로그인, 로그인공지사항 등을 구현하였습니다.


앞으로 갈길이 머네요. 그래도 계정생성단계는 클리어입니다 ㅠㅎㅎ

신고
Posted by 규규스
▒ 댓글 쓰기 댓글10 트랙백0

댓글을 달아 주세요

  1. EQUPANSOFT 2010.11.16 18:21 신고  댓글주소  수정/삭제  댓글쓰기

    저기 서버는 얼마에 사셨나요??

  2. EQUPANSOFT 2010.11.16 18:26 신고  댓글주소  수정/삭제  댓글쓰기

    이거,,
    공짜로 주시나요,,ㅎㅎ

  3. EQUPANSOFT 2010.11.17 14:38 신고  댓글주소  수정/삭제  댓글쓰기

    저기 제가 서버 쪽은 개념이 잘안서는데,
    일반컴퓨터로도,,(데스크탑)으로도
    돌릴 수 있나요???
    아,,
    ㅈㅅ
    합니다
    자세하게 설명해 주시면 감사하겠습니다.
    equpansoft@naver.com

    • Favicon of http://www.softhearts.co.kr 규규스 2010.11.18 21:46 신고  댓글주소  수정/삭제

      넵. 서버는 말그대로 서버/클라이언트 비대칭 통신형태에서 다수의 클라이언트가 접속하는 장치예요. 쉽게말해서 온라인게임을 생각해보면, 우리는 클라이언트로 서버에 접속을해서 게임을하죵. 서버는 서버프로그램과(소프트웨어) 서버장치(하드웨어) 로 나뉘는데요. 저는 서버장치를 전문장치가 아니라, 일반컴퓨터로 쓴거랍니다. ^^ㅎ 그래서 제 컴퓨터는 논리적인 서버가 되었다고 할 수 있죠.

  4. EQUPANSOFT 2010.11.19 01:10 신고  댓글주소  수정/삭제  댓글쓰기

    아 그렇군요,
    논리적 성립이 됬군요,
    좋은 정보 감사합니다..ㅎㅎ

  5. EQUPANSOFT 2010.11.20 22:02 신고  댓글주소  수정/삭제  댓글쓰기

    저기,
    혹시 네이버나 야후,다음 블로그 있으세요??
    이웃 맺으면 좋겠네요.

  6. 이브닝커피 2011.12.25 13:14 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요.비주얼 베이직 소켓관련 자료를 검색하다가 님의 사이트에 방문하게 되었습니다.
    다름아니라, 비주얼베이직으로 실시간으로 클라이언트에서 정보를 전달하는 중계서버와 클라이언트의 요청을 받아 처리하는 운영서버를 제작하게 되었는데요. 비주얼베이직은 사용을 해본적이 거의 없는 상태인데 고객이 비주얼베이직으로만 짜야 한다고 해서, 현재 열공중입니다.

    근데 현재 비주얼베이직의 단일스레드 모델과 이벤트방식의 윈속컨트롤사용에 있어 애를 먹고 있는데요.
    저도 같은 고민을 했습니다. 패킷이 밀리지는 않을까 하고요.
    스레드를 사용할 수 없으니, 사용자의 패킷을 큐에 넣어넣어 봤자 처리속도는 똑 같을 것이고. 게다가 스레소켓배열의 갯수를 정하기도 애매했습니다. 고객은 200 명이상을 요구하는데,

  7. 이브닝커피 2011.12.25 13:39 신고  댓글주소  수정/삭제  댓글쓰기

    버튼을 잘못눌러서 글이 끊겼습니다.죄송..
    --------------------------------------------------------------------------------------
    비주얼베이직으로 공부한 지식으로는 200명이상이 가능한지나 모르겠습니다. 서버를 몇개로 나누면 되겠지만, 관리적인 문제도 그렇고, 여러가지 문제로 좀 어렵고요. 중계서버나 운영서버의 역할은 로직은 아주 간단해서 하나의 프로세스에서 돌아가게 하고 싶지만, 단일스레드에서 다 돌린다면 즉시적으로 중계해야할 패킷이나 사용자의 패킷이 하염없이 밀릴것 같아 고민입니다. 게다가 디비 작업도 포함되어있어서 더 고민이 됩니다..
    위 글을 읽어보니 스레드를 사용하셨다고 하셨는데, 어떤 방식으로 사용하셨는지요.COM 을 사용하신건가요? 스레드를 이용해서 소켓통신을 하신건가요? 도무지 방법을 모르겠습니다. 자료도 없고.
    일단 귀찮더라도 중계서버와 운영서버는 프로세스를 나누고 동기화하는 방식을 쓰기로 결정했지만
    사용자의 패킷처리 처리문제는 많이 답답한 상태입니다.
    윈속컨트롤을 보면 100명이 패킷을 보내고 각 처리과정이 0.1 초가 걸딘다고 하면 맨마지막 100번째 사람은 10초가 걸린다는 얘기인데 스레드를 사용하지 못하는 상태에서는 도무지 저에게는 답이 안보입니다.
    초면에 이런 장문의 질물을 드려서 죄송합니다. 제발 조금이나마 조언을 부탁드립니다.
    아니 시간되시면 제가 식사라도 대접하겠습니다.


    • Favicon of http://www.softhearts.co.kr 규규스 2012.01.06 11:13 신고  댓글주소  수정/삭제

      현재 블로그 도메인에 좀 문제가 있어서 해결하느라 댓글을 이제봤네요. VB에서는 스레드를 따로 지원하지 않습니다. 하지만 스레드 개념의 비슷한건 지원하죠 잘아시겠지 만 Timer컨트롤입니다. 이는 지정한 msec단위 시간마다 이벤트가 발생되는 컨트롤입니다. 실제로 이는 while문과같은 온그라운드 방식이 아닌 나름 백그라운드에서 처리율을 그리많이 잡아먹지않는 꽤나괜찮은 '스레드'입니다. 한 Timer컨트롤에 카운터를넣어 처리하시든 여러 Timer컨트롤을 사용하시든 하시면 되구요, 패킷밀리는현상은 말씀하신 큐등의 자료구조를 이요해서 해결한예가 VB포럼 (네이버카페 myvb, xlsvba)등에 다수 있습니다. 물론 이도 제가알기론 다중Timer'스레드ㅎ'를 이용해서 해결한걸로 압니다. 약간만 고민해보시면 모델이 보이실겁니다. 참고하시고 답변늦어 죄송합니다


블로그 이미지
Welcome- 여긴 개발자 규규스의 본진입니다
규규스

카테고리

전체글 보기 (51)
공지사항(Notice) (1)
프로필(Profile) (1)
▼안드로이드 개발 (10)
▼ 진행중-프로젝트 (4)
▼ 개발중-프로젝트 (4)
▶Android Develop En (1)
픽션(Fiction) (5)
활용팁(Tip) (3)
스크랩(Scrap) (0)
소스데이터(Store) (18)
안드로이드(Android) (2)
기타(ETC) (2)

달력

 « |  » 2017.08
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
Yesterday34
Today22
Total152,841
free counters