Ejemplo n.º 1
0
    private static void ReceiveCallback(IAsyncResult ar)//받기
    {
        try
        {
            stateObject state  = (stateObject)ar.AsyncState;
            Socket      client = state.worksocket;

            int bytesread = client.EndReceive(ar);
            if (bytesread > 0)
            {
                state.sb.Append(Encoding.UTF8.GetString(state.buffer, 0, bytesread));
                client.BeginReceive(state.buffer, 0, stateObject.buffersize, 0, new AsyncCallback(ReceiveCallback), state);
            }
            else
            {
                if (state.sb.Length > 1)
                {
                    response = state.sb.ToString();
                }
                ReceiveDone.Set();
            }
            instance.cdivide(state);
        }
        catch (Exception e)
        {
            //Debug.Log(e.ToString());
        }
    }
Ejemplo n.º 2
0
 private void Receive(Socket client)//Receive
 {
     try
     {
         stateObject state = new stateObject();
         state.worksocket = client;
         client.BeginReceive(state.buffer, 0, stateObject.buffersize, 0, new AsyncCallback(ReceiveCallback), state);
     }
     catch (Exception e)
     {
         //Debug.Log(e.ToString());
     }
 }
Ejemplo n.º 3
0
    public void cdivide(stateObject state)//플래그에 따라 버퍼를 나눔
    {
        sFlag Flag = new sFlag();

        Flag = (sFlag)BytetoStruct(state.buffer, typeof(sFlag), 256); //플래그 확인
        if (Flag.flag == (char)eMSG.em_USER_LOGIN)
        {
            vLogin(state.buffer);
            //로그인 시 받는 메시지
        }
        else if (Flag.flag == (char)eMSG.em_USER_MATCHING)
        {
            vMatching();
            //매칭 시 받는 메시지
        }
        else if (Flag.flag == (char)eMSG.em_USER_POSITION)
        {
            Set_Position(state.buffer);
            //위치 받을 시 받는 메시지
        }
        else if (Flag.flag == (char)eMSG.em_USER_TEAM)
        {
            Set_Team(state.buffer);
            //팀 결정 시 받는 메시지
        }
        else if (Flag.flag == (char)eMSG.em_USER_RAYSHOT)
        {
            Set_Rayshot(state.buffer);
            //레이에 관한 메시지
        }
        else if (Flag.flag == (char)eMSG.em_USER_CAMERA)
        {
            Set_Camera(state.buffer);
            //카메라 정보값
        }
        else if (Flag.flag == (char)eMSG.em_USER_FKEY)
        {
            Set_Fkey(state.buffer);
            //Fkey 정보값
        }
        else if (Flag.flag == (char)eMSG.em_USER_ZKEY)
        {
            Set_Zkey(state.buffer);
            //Zkey 정보값
        }
        else if (Flag.flag == (char)eMSG.em_USER_XKEY)
        {
            Set_Xkey(state.buffer);
        }
        else if (Flag.flag == (char)eMSG.em_USER_CKEY)
        {
            Set_Ckey(state.buffer);
            //Fkey 정보값
        }
        else if (Flag.flag == (char)eMSG.em_USER_VKEY)
        {
            Set_Vkey(state.buffer);
            //Fkey 정보값
        }
        else if (Flag.flag == (char)eMSG.em_USER_RKEY)
        {
            Set_Rkey(state.buffer);
            //Rkey 정보값
        }
        else if (Flag.flag == (char)eMSG.em_USER_GAMEDEATH)
        {
            Set_Gamedeath(state.buffer);
        }
        else if (Flag.flag == (char)eMSG.em_USER_RESOURCE)
        {
            Set_Resource(state.buffer);//자원값
        }
        else if (Flag.flag == (char)eMSG.em_USER_STATUS)
        {
            Set_status(state.buffer);//상태값
        }
        else if (Flag.flag == (char)eMSG.em_OBJECT_TREE)
        {
            Set_Tree(state.buffer);//나무 상태값
        }
        else if (Flag.flag == (char)eMSG.em_OBJECT_STONE)
        {
            Set_Stone(state.buffer);//돌 상태값
        }
        else if (Flag.flag == (char)eMSG.em_OBJECT_BULLET)
        {
            Set_Bullet(state.buffer);//총알상자 상태값
        }
        else if (Flag.flag == (char)eMSG.em_MAP_MAPSETTING)
        {
            //set_Mapsetting(state.buffer);
        }
        else if (Flag.flag == (char)eMSG.em_OBJECT_FLOOR)
        {
            Set_Floor(state.buffer);//박스 상태값
        }
        else if (Flag.flag == (char)eMSG.em_USER_LOGOUT)
        {
            //게임도중 로그아웃시 설정
            Set_Logout(state.buffer);
        }
    }