Beispiel #1
0
    bool send_cmd_and_wait_response(byte cmd, String str, ref packet pk, int micro_seconds)
    {
        vesal_socket sock   = new vesal_socket();
        bool         result = sock.connect("127.0.0.1", port);

        if (!result)
        {
            vesal_log.vesal_write_log("cant conn");
            return(false);
        }

        byte[] data = packet.create_output_from_string(cmd, str);
        sock.send_data(data);

        long cur = DateTime.Now.Ticks / 10000;
        bool ret = false;

        while (true)
        {
            System.Threading.Thread.Sleep(1);
            ArrayList sockList = new ArrayList();
            sockList.Add(sock._sock);
            Socket.Select(sockList, null, null, 1);
            if (sockList.Count > 0)
            {
                try
                {
                    ret = sock.recv_packet(ref pk);
                }
                catch
                {
                    vesal_log.vesal_write_log("recv failed!!!");
                    return(false);
                }
            }

            if (ret)
            {
                vesal_log.vesal_write_log("get response");
                break;
            }

            long cur2 = DateTime.Now.Ticks / 10000;
            if (cur2 >= cur + micro_seconds)
            {
                vesal_log.vesal_write_log("time out");
                break;
            }
        }

        sock.close();
        return(ret);
    }
    private void FixedUpdate()
    {
        try
        {
            ArrayList clientList = new ArrayList();
            clientList.Add(_conn_sock._sock);
            Socket.Select(clientList, null, null, 1);
            if (clientList.Count > 0)
            {
                try
                {
                    packet pk         = new packet();
                    bool   get_packet = _conn_sock.recv_packet(ref pk);
                    //UnityEngine.Debug.Log(get_packet);
                    if (get_packet)
                    {
                        byte[] buff = new byte[pk._data_len];

                        for (int j = 0; j < pk._data_len; j++)
                        {
                            buff[j] = pk._data[j];
                        }
                        //接收
                        string str = System.Text.Encoding.UTF8.GetString(buff);
                        UnityEngine.Debug.Log(pk._cmd_code == (byte)VESAL_CMD_CODE.MSG_CMD);
                        //vesal_log.vesal_write_log("sub"+pk._cmd_code+"  "+str);
                        UnityEngine.Debug.Log(pk._cmd_code);
                        UnityEngine.Debug.Log((byte)VESAL_CMD_CODE.MSG_CMD);
                        //
                        if (pk._cmd_code == (byte)VESAL_CMD_CODE.MSG_CMD)
                        {
                            UnityEngine.Debug.Log("realMessage:" + str);
                            vesal_log.vesal_write_log("realMessage:" + str);
                            GetMessage(str);
                        }
                    }
                }
                catch (Exception e)
                {
                    //UnityEngine.Debug.Log(e.Message);
                }
            }
        }
        catch (Exception e)
        {
            UnityEngine.Debug.Log(e.Message);
        }
    }