0

さて、私は学校のプロジェクトの一環として Android MUD クライアントを設計しています。ただし、ANSI カラー解析の実装中に問題が発生しています。バイト単位でデータを読み込みます。文字「hex」を「\033」、「27」、および「0x1B」に設定しようとしましたが、エスケープ文字を検出できないようです。私のチェックで何か間違っていることがわかりますか?また、「char check = String.valueOf(j).charAt(0);」という行 は一時的なもので、もともと文字変数「hex」をバイト「j」に対してチェックしようとしていました。キャラクターをチェックするより良い方法はありますか?

                    while(isConnected) {

                    int j = 0;

                    try {
                            int i = arrayOfByte.length;
                            j = streamInput.read(arrayOfByte, 0, i);

                            char check = String.valueOf(j).charAt(0);

                            Log.d("Console","Char is - " + check);
                            if (j == -1)
                            {

                                Log.d("Console","j = -1");
                                throw new Exception("Error while reading socket.");
                            } else if (j == 0) {

                                Log.d("Console","Continuing");
                                continue;
                            }  else if (check == hex)  {
                                Log.d("Console","Yo, daddio!");
                            } else {

                                final String strData = new String(arrayOfByte, 0, j).replace("\r", "");


                                runOnUiThread(new Runnable() {
                                     public void run() {


                                         textContent.append(strData);
                                         scrollToBottom();

                                    }
                                });

                            }
                    } catch (Exception e) {

                        Handler handlerException = GameWindow.this.mHandler;
                        String strException = e.getMessage();
                        final String strMessage = "Error while receiving from server:\r\nConnection terminated";

                        Runnable rExceptionThread = new Runnable()
                        {
                            public void run()
                            {
                                Toast.makeText(context, strMessage, 3000).show();
                            }
                        };

                        handlerException.post(rExceptionThread);

                        if(strException.indexOf("reset") != -1 || strException.indexOf("rejected") != -1)
                        {
                            isConnected = false;
                            try 
                            {
                                connectionSocket.close();
                            }
                            catch (IOException e1) 
                            {
                                e1.printStackTrace();
                            }

                        }

                        isConnected = false;
                    }

                }   
4

1 に答える 1