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); } }