Ejemplo n.º 1
0
    void OnReceving()
    {
        while (true)
        {
            byte[] data = new byte[1024 * 3];

            if (!mIsUdp)
            {
                mSocket.Receive(data);
            }
            else
            {
                mSocket.ReceiveFrom(data, ref mRemoteIpPoint);
            }

            String        msg     = Encoding.Default.GetString(data);
            StructRequest request = NetFormatHelper.StringToStructRequest(msg);
            Debug.Log("수신 : " + msg);


            mResponse     = request;
            mIsResponsing = true;
            mIsReceiving  = false;
        }
        mSocket.Close();
    }
Ejemplo n.º 2
0
    bool Send(ref Socket socket, StructRequest response)
    {
        string send = NetFormatHelper.StructRequestToString(response);

        byte[] _data = new Byte[BYTESIZE];
        _data = NetFormatHelper.StringToByte(send);

        try
        {
            Console.WriteLine("송신 : " + send);

            if (!mIsUdp)
            {
                socket.Send(_data);
            }
            else
            {
                socket.SendTo(_data, mRemoteEndPoint);
            }

            return(true);
        }
        catch (Exception err)
        {
            Console.WriteLine("Send error : Soket Close");
            SocektClose(socket);
            return(false);
        }
    }
    /* @ url : AttackBomb
     * @ request :
     * @ response :
     *      bombIndex
     */

    // @Send 함수가 별도로 있음 주의할 것
    void AttackBomb(StructRequest request)
    {
        string user_id = request.uid;

        // 유저가 없을 경우
        if (!mUserData.ContainsKey(user_id))
        {
            return;
        }

        // 물풍선 위치 저장
        StructUserData user_data = mUserData[user_id];

        if (request.parameter.ContainsKey("bombIndex"))
        {
            user_data.bombIndex = request.parameter["bombIndex"];
        }

        // 바로 쏴주기 떄문에 사실 필요는 없다.
        mUserData[user_id] = user_data;

        // 파라매터
        Dictionary <string, string> dic_param = new Dictionary <string, string>();

        dic_param["bombIndex"] = user_data.bombIndex;
        StructRequest res = MakeResponse(request, dic_param);

        // 상대 클라이언트 소켓에 물풍선 통신
        Socket socket;

        if (request.uid == "0")
        {
            socket = mBombSocket1;
        }
        else
        {
            socket = mBombSocket2;
        }

        string send = NetFormatHelper.StructRequestToString(res);

        byte[] _data = new Byte[ServerNet.BYTESIZE];
        _data = NetFormatHelper.StringToByte(send);

        try
        {
            Console.WriteLine("수신 : " + send);
            socket.Send(_data);
        }
        catch (Exception err)
        {
            Console.WriteLine("Send error");
            return;
        }
    }
Ejemplo n.º 4
0
    public void RequestMsg(StructRequest request)
    {
        if (mIsReceiving)
        {
            return;
        }
        string msg = NetFormatHelper.StructRequestToString(request);

        Debug.Log("송신 : " + msg);

        byte[] data = NetFormatHelper.StringToByte(msg);

        mSocket.Send(data);
        mIsReceiving = true;
    }
Ejemplo n.º 5
0
 StructRequest MakeResponse(ref Socket socket, string rec_msg)
 {
     try
     {
         StructRequest request  = NetFormatHelper.StringToStructRequest(rec_msg);
         StructRequest response = mRequestHandler.HandleRequest(request, ref socket);
         return(response);
     }
     catch
     {
         SocektClose(socket);
         Console.WriteLine("null error msg :" + rec_msg);
         Console.WriteLine("null error : Soket Close");
         return(ErrorStructRequest());
     }
 }