본문 바로가기
네트워크

C# 비동기 클라이언트 소켓서버

by violetoz 2013. 5. 14.

========[개발 IDE]========

비쥬얼 스튜디오 2008

 

========[개발 언어]========

C#

 

========[버전]========

v1.2.110207

 

========[클래스 다이어그램]========

 

- 메인 패키지

비동기 소켓 구현을 위한 메인 인터페이스

 

IAsyncStateObject : 비동기 데이터 리시브를 위한 버퍼링 객체

IAdvancedAsyncStateObject : IAsyncStateObject를 확장하여 엔드 패킷 확인 추가

IAsyncSocketClient : 비동기 소켓 클라이언트

IAsyncSocketServer: 비동기 소켓 서버

 

 

- Event 패키지

클라이언트, 서버에서 발생하는 이벤트 정의

 

AsyncSocketAcceptEventArgs: 서버가 클라이언트를 Accept 했을때 발생하는 이벤트

AsyncSocketConnectionEventArgs: 클라이언트가 서버에 연결, 연결 끊김 시 발생하는 이벤트
AsyncSocketErrorEventArgs: 소켓 또는 동작 중 발생하는 오류 전달 이벤트
AsyncSocketReceiveEventArgs: 클라이언트 데이터를 받았을 때 데 발생하는 이벤트
AsyncSocketSendEventArgs: 클라이언트에서 데이터를 전달 할 때 발생하는 이벤트
 

 

- Impl 패키지

클라이언트 서버 이벤트를 실제로 구현

 

 

Default 시리즈 : 기본적인 비동기 소켓을 구현

Advanced 시리즈 : 엔드패킷을 이용하여 데이터 전송 종료 시점을 정확하게 처리

 

 

========[설명]========

 

비동기 형식의 데이터 전송, 수신을 구현한 클라이언트, 서버

 

서버는 다음과 같은 형태로 사용

 

        private void StartServer()
        {
            // 서버 생성, 서버포트, 엔드 패킷을 입력

            IAsyncSocketServer server = new AdvancedAsyncSocketServer(serverPort, Encoding.UTF8.GetBytes("\r\n"));
            // 이벤트 핸들러 설정

            server.OnAccept += new SDKNetLib.Event.AsyncSocketAcceptEventHandler(server_OnAccept);
            server.OnError += new SDKNetLib.Event.AsyncSocketErrorEventHandler(server_OnError);
            server.OnClose += new SDKNetLib.Event.AsyncSocketCloseEventHandler(server_OnClose);

            server.OnClientReceive += new SDKNetLib.Event.AsyncSocketReceiveEventHandler(server_OnClientReceive);
            server.OnClientClose += new SDKNetLib.Event.AsyncSocketCloseEventHandler(server_OnClientClose);
            server.OnClientError += new SDKNetLib.Event.AsyncSocketErrorEventHandler(server_OnClientError);
            // 서버 시작
            server.Listen();
        }

 

 클라이언트는 다음과 같은 형태로 사용

        private void InitializeClient()
        {

            // 클라이언트 생성, 엔드 패킷을 입력
            IAsyncSocketClient client = new AdvancedAsyncSocketClient(Encoding.UTF8.GetBytes("\r\n"));

 

            // 이벤트 핸들러 설정
            client.OnConnect += new SDKNetLib.Event.AsyncSocketConnectEventHandler(client_OnConnect);
            client.OnSend += new SDKNetLib.Event.AsyncSocketSendEventHandler(client_OnSend);
            client.OnClose += new SDKNetLib.Event.AsyncSocketCloseEventHandler(client_OnClose);
            client.OnError += new SDKNetLib.Event.AsyncSocketErrorEventHandler(client_OnError);

 

            // 연결

            client.Connect("서버 아이피", 서버 포트);
        }

'네트워크' 카테고리의 다른 글

채팅프로그램 메신저 소스  (0) 2013.05.14
c# 비동기 방식의 콜백함수  (0) 2013.05.14
C# TCP 소켓통신 Server  (0) 2013.04.25
C# TCP 소켓통신  (0) 2013.04.25
SuperSocket  (0) 2013.04.25