簡體   English   中英

解析套接字輸入字符串

[英]parse socket input string

我想從我的telnet套接字輸入中解析“藝術家-標題”。 現在,它僅顯示最后一行“ END”。 我做錯了什么? 我是java.pls幫助的初學者...

我的活動腳本要上班:

try {
        Socket s = new Socket("10.0.2.2", 5555);


        BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream(), "ISO8859_1"));



        String on_air = "request.on_air" + System.getProperty("line.separator");
        out.write(on_air);
        out.flush();
        Log.i("TcpClient", "sent: " + on_air);
        String on_airin = in.readLine() + System.getProperty("line.separator");
        Log.i("TcpClient", "received: " + on_airin);
        String metadata = "ao.metadata "+ on_airin + System.getProperty("line.separator"); 
        out.write(metadata);
        out.flush();
        Log.i("TcpClient", "sent2: " + metadata);
        String metadatain = in.readLine() + System.getProperty("line.separator");
        Log.i("TcpClient", "received: " + metadatain);

        String line = in.readLine();
        while (line != null) {

            line = in.readLine();


            System.out.println(line);
            output = (TextView) findViewById(R.id.textView2);
            output.setText(line);





//tv.setText(online + formatedDate );
        output = (TextView) findViewById(R.id.textView1);



s.close();

    }} catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

我的System.out.println http://pastebin.com/SkfiPXar

您在打印之前執行額外的readLine() 折疊以下三行:

String line = in.readLine();
while (line != null) {
    line = in.readLine();

進入

String line = null;
while ((line = in.readLine()) != null) {  

另外,看起來您在while循環中關閉了Socket ,這可能會引起問題。

完整活動:

public class MainActivity extends Activity {


//TextView output; //textview to display the artist
TextView artist;
//TextView output; //textview to display the duration
TextView time;
/** Called when the activity is first created. */



public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);






    try {
        Socket s = new Socket("10.0.2.2", 5555);


        BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream(), "ISO8859_1"));

        //get audio estimated remaining time
        String milliseconds = "ao.remaining" + System.getProperty("line.separator");
        out.write(milliseconds);
        out.flush();
        Log.i("TcpClient", "sent: " + milliseconds);
        String milliseconds_in = in.readLine() + System.getProperty("line.separator");
        Log.i("TcpClient", "received: " + milliseconds_in);



        //get metadata stuff  
        String on_air = "request.on_air" + System.getProperty("line.separator");
        out.write(on_air);
        out.flush();
        Log.i("TcpClient", "sent: " + on_air);
        String on_airin = in.readLine() + System.getProperty("line.separator");
        Log.i("TcpClient", "received: " + on_airin);
        String metadata = "ao.metadata "+ on_airin + System.getProperty("line.separator"); 
        out.write(metadata);
        out.flush();
        Log.i("TcpClient", "sent: " + metadata);
        String metadatain = in.readLine() + System.getProperty("line.separator");
        Log.i("TcpClient", "received: " + metadatain);






        String closetelnet = "exit" + System.getProperty("line.separator"); 
        out.write(closetelnet);
        out.flush();
        Log.i("TcpClient", "sent: " + closetelnet);
        String closetelnetin = in.readLine() + System.getProperty("line.separator");
        Log.i("TcpClient", "received: " + closetelnetin);


        String line = null;
        while ((line = in.readLine()) != null) {


            System.out.println(line);
            artist = (TextView) findViewById(R.id.textView2);
            artist.setText(line);

            float seconds = Float.parseFloat(milliseconds_in);
            Date date = new Date((long)(seconds * 1000));
            SimpleDateFormat formater = new SimpleDateFormat("mm:ss");
            String formatedDate = formater.format(date);
            //android.util.Log.d("This will display:", formatedDate);

            time = (TextView) findViewById(R.id.textView1);
            time.setText(formatedDate);


    }   
        s.close();

    }catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

}

System.out http://pastebin.com/G1P1HrvA

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM