[英]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.