コード例 #1
0
    /* @ url : SyncMovement
     * @ request :
     *       posX
     *       posY
     *       opponentUid
     * @ response :
     *      opponentPosX
     *      opponentPosY
     */
    StructRequest SyncMovement(StructRequest request)
    {
        string user_id = request.uid;

        // 유저가 없을 때
        if (!mUserData.ContainsKey(user_id))
        {
            return(ServerNet.ErrorStructRequest());
        }

        StructUserData user_data = mUserData[user_id];

        // 파라매터가 오지 않았을 경우
        if (request.parameter == null)
        {
            return(ServerNet.ErrorStructRequest());
        }

        // 유저 위치 기록
        if (request.parameter.ContainsKey("posX"))
        {
            user_data.posX = request.parameter["posX"];
        }

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

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


        mUserData[user_id] = user_data;

        // 상대방 정보
        if (!request.parameter.ContainsKey("opponentUid"))
        {
            return(ServerNet.ErrorStructRequest());
        }

        string opponentUid = request.parameter["opponentUid"];

        // 상대방 정보 없을 경우
        if (!mUserData.ContainsKey(opponentUid))
        {
            return(ServerNet.ErrorStructRequest());
        }

        StructUserData opponent_data = mUserData[opponentUid];

        // 상대방 위치를 response로 전달
        Dictionary <string, string> dic_param = new Dictionary <string, string>();

        dic_param["opponentPosX"] = opponent_data.posX == null ? "0" : opponent_data.posX;
        dic_param["opponentPosY"] = opponent_data.posY == null ? "0" : opponent_data.posY;
        return(MakeResponse(request, dic_param));
    }
コード例 #2
0
    /// <summary>
    /// 接收消息
    /// </summary>
    /// <param name="clientSocket"></param>
    private static void ReceiveMessage(object _data)
    {
        DP_Msg data = (DP_Msg)_data;

        while (!data.m_bError)
        {
            Thread.Sleep(10);

            //lock (data.m_Lock)
            {
                Queue <WfPacket> local_RecvQueue        = data.m_RecvQueue;
                Queue <WfPacket> local_SendQueue        = data.m_SendQueue;
                object           local_Lock             = data.m_Lock;
                PacketHandlerMgr local_PacketHandlerMgr = data.m_PacketHandlerMgr;
                Socket           myClientSocket         = data.clientSocket;
                string           text   = null;
                bool             flag   = false;
                byte[]           array  = new byte[WfPacket.GetHeaderLength()];
                byte[]           array2 = null;
                int num = 0;
                do
                {
                    text = ServerNet.RecvAll(data, ref array, ref array2, ref num, ref flag);
                    if (num != 0)
                    {
                        data.m_LastConnTime = Environment.TickCount;
                    }
                }while (text == null && !flag);
            }
        }
        Log.print("线程{0}ReceiveMessage结束。", data.clientSocket.RemoteEndPoint.ToString());
    }
コード例 #3
0
    public void ProcessPacket(ClientSession socket, WfPacket packet)
    {
        ushort msgType   = 0;
        ushort msgLength = 0;

        packet.ReadHeader(ref msgType, ref msgLength);
        if (ServerNet.GetEnableDebug())
        {
            Debug.Log("receive:" + Convert.ToString(msgType, 16));
        }
        System.Action <ClientSession, WfPacket> packetHandler = (System.Action <ClientSession, WfPacket>)m_KCPPacketHandlers[(ushort)msgType];
        if (packetHandler == null)
        {
            Debug.Log("msg not process=" + msgType.ToString());
        }
        else
        {
            try
            {
                packetHandler(socket, packet);
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
        }
    }
コード例 #4
0
        static void Main(string[] args)
        {
            ServerNet serverNet = new ServerNet();

            serverNet.protocol = new ProtocolBytes();
            serverNet.Start(IP, PORT);


            Console.ReadKey();
        }
コード例 #5
0
 public void Start()
 {
     if (m_UseTcp)
     {
         ServerNet.SetEnableDebug(false);
         ServerNet.Init();
     }
     else
     {
         KCPNet.Init();
     }
 }
コード例 #6
0
    //连接类(信息回馈)
    public void RoomNum(ProtocolBase protoBase)
    {
        ProtocolBytes proto     = (ProtocolBytes)protoBase;
        int           start     = 0;
        string        protoName = proto.GetString(start, ref start);
        int           num       = proto.GetInt(start, ref start);

        Client.instance.roomnum = num;
        if (num == 2 || ServerNet.IsUse())
        {
            SceneManager.instance.StartScene();
        }
    }
コード例 #7
0
    public static void SendMsg(DP_Msg socket)
    {
        SC_PreBattle sendPak = new SC_PreBattle();

        sendPak.datas = new List <t_PreparePlayerData>();

        for (uint i = 0; i < 3; ++i)
        {
            t_PreparePlayerData data = new t_PreparePlayerData();
            data.m_jobid    = i;
            data.m_playerid = i;
            data.m_name     = "Player" + i;

            sendPak.datas.Add(data);
        }
        WfPacket sendPak2 = new WfPacket((ushort)emPacket_Battle.em_SC_PreBattle);

        sendPak.Serialize(sendPak2);
        ServerNet.SendPacket(socket, sendPak2);
        UnityEngine.Debug.Log("向客户端发送消息,SC_PreBattle");
    }
コード例 #8
0
    public void ProcessPacket(DP_Msg socket, WfPacket packet)
    {
        ushort msgType   = 0;
        ushort msgLength = 0;

        packet.ReadHeader(ref msgType, ref msgLength);
        if (ServerNet.GetEnableDebug())
        {
            Debug.Log("receiving:" + msgType);
        }
        System.Action <DP_Msg, WfPacket> handler = null;
        if (!m_PacketHandlers.TryGetValue(msgType, out handler))
        {
            try
            {
                handler(socket, packet);
            }
            catch (Exception ex)
            {
                Log.print(ex.Message);
            }
        }
    }
コード例 #9
0
    /* @ url : GetOpponentData
     * @ request :
     * @ response :
     *      opponentUid
     */
    StructRequest GetOpponentData(StructRequest request)
    {
        string user_uid     = request.uid;
        string opponent_uid = ErrorCode.Error.ToString();

        if (user_uid == "1")
        {
            opponent_uid = "0";
        }
        else
        {
            opponent_uid = "1";
        }

        if (mUserData.ContainsKey(opponent_uid))
        {
            StructUserData opponent_data          = mUserData[opponent_uid];
            Dictionary <string, string> dic_param = new Dictionary <string, string>();
            dic_param["opponentUid"] = opponent_data.uid;
            return(MakeResponse(request, dic_param));
        }

        return(ServerNet.ErrorStructRequest());
    }
コード例 #10
0
ファイル: main.cs プロジェクト: scr2654/CrazyArcadeServer
 static void Main(string[] args)
 {
     Console.WriteLine("Hello World!");
     ServerNet server = new ServerNet();
 }
コード例 #11
0
    public bool Connect()
    {
        string host = "119.23.52.136";

        // Debug
        if (ServerNet.IsUse())
        {
            host = "127.0.0.1";
        }

        int port = 9970;

        try
        {
            socket    = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            UDPsocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

            Host = host;
            //ip = new IPEndPoint(IPAddress.Any, port - 2);
            //ip = new IPEndPoint(IPAddress.Any, port);

            //socket.Connect(host, port);
            IsConnect = false;
            TimeoutObjct.Reset();

            socket.BeginConnect(host, port, ConnectCb, socket);

            if (TimeoutObjct.WaitOne(timeoutMSec, false))
            {
                if (IsConnect)
                {
                }
                else
                {
                    //Debug.Log(1);
                    Close();
                    return(false);
                }
            }
            else
            {
                Close();
                return(false);
            }
            //Debug.Log(((IPEndPoint)socket.LocalEndPoint).Port);
            ip = new IPEndPoint(IPAddress.Any, ((IPEndPoint)socket.LocalEndPoint).Port);
            UDPsocket.Bind(ip);

            isUse    = true;
            ipAdress = host;

            socket.BeginReceive(readBuff, buffCount, BUFFER_SIZE - buffCount, SocketFlags.None, ReceiveCb, readBuff);
            UDPsocket.BeginReceive(UDPreadBuff, 0, BUFFER_SIZE, SocketFlags.None, UDPReceiveCb, UDPreadBuff);
            return(true);
        }
        catch (Exception e)
        {
            Debug.Log(isUse);
            Debug.Log(e.Message);
            return(false);
        }
    }
コード例 #12
0
 public ServerNet()
 {
     instance = this;
 }
コード例 #13
0
ファイル: main.cs プロジェクト: Uyism/CrazyArcade_02_Server
 static void Main(string[] args)
 {
     Console.WriteLine("Server Wake Up");
     ServerNet server = new ServerNet();
 }
コード例 #14
0
 void Set()
 {
     server.RemoveItself();
     server = new ServerNet(url, type, types);
 }