[C#] 네이버 실시간 검색 순위 CS프로그램 - 4

개발 노트/C#  2013.08.07 09:00

 

안녕하세요 명월입니다.


이번 포스팅에서는 저번 포스팅에 이어서 소켓 대기 망을 작성해 보도록 하겠습니다.

서버의 소켓이니 동기 모듈이 아닌 비동기 모듈로 작성하겠습니다.

 


 

생성자 부분에서 소켓 설정을 하겠습니다.

그리고 Completed 이벤트를 받고 처음 Client로 부터 전문을 받으면 MWOK! 라는 프로토콜로 승인을 확인 하고 가공한 실시간 메시지를 전송합니다..

 

중간 중간 a라던가 이상한 변수명이 보이는데 이건 데이터를 찍어 보려고 넣은 값이네요..하하

의미 없는 소스입니다. 신경쓰지 마세요.

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace RealSearchServer
{
    class ClientConnection
    {
        private Socket m_Server;
        
        public ClientConnection()
        {
            m_Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 7777);
            m_Server.Bind(ipep);
            m_Server.Listen(100);

            SocketAsyncEventArgs args = new SocketAsyncEventArgs();
            args.UserToken = m_Server;
            args.Completed += new EventHandler(Accept_Completed);
            m_Server.AcceptAsync(args);
        }
        private void Accept_Completed(object sender, SocketAsyncEventArgs e)
        {
            try
            {
                Socket client = e.AcceptSocket;
                byte[] bData = new byte[10];
                client.Receive(bData);
                String dfsd= Encoding.Unicode.GetString(bData);
                if (Encoding.Unicode.GetString(bData) == "MWOK!")
                {
                    byte[] SendMessage = SendMessageStruct.Instance().GetMessage();
                    byte[] a = new byte[1024];
                    for (int i = 0; i < 1024; i++)
                    {
                        a[i] = SendMessage[i + 1];
                    }
                    string bb = Encoding.Unicode.GetString(a);
                    SocketAsyncEventArgs args = new SocketAsyncEventArgs();
                    args.UserToken = client;
                    args.SetBuffer(SendMessage, 0, SendMessage.Length);
                    client.SendAsync(args);
                }
                e.AcceptSocket = null;
            }
            catch (Exception ex)
            {
                
            }
            m_Server.AcceptAsync(e);
        }
    }
}


참고 소스입니다.

 

ClientConnection.cs

 

 


댓글 0개가 달렸습니다.
댓글쓰기