我正在开发一个应用程序,我通过套接字连接来获取数据,但是一旦我建立了一个通过按钮点击调用的套接字连接,我可以看到我能够连接并获取数据,但是套接字连接没有终止,应用程序挂起。我已经包含了socket.close();在我的代码中但它不是帮助下面是我的代码片段..
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/// some code which isn't important here
// establish socket connection to get data
try{
Socket s = new Socket("IP",portnumber);
Log.d(TAG, "socket connected");
PrintWriter out1 = new PrintWriter(s.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out1.println(value1);
Log.d(TAG, value1);
String line="";
String msg = "";
while ((line=in.readLine()) != "//end of message from server")
{
msg+=line+"\n";
Log.d(TAG, msg);
}
out1.close();
in.close();
s.close();
Log.d(TAG, "socket closed " );
}
catch (IOException e) {
Log.e(TAG, "file finished " + e.getMessage());
}
答案 0 :(得分:1)
in.readLine();中的hangs
。您正在等待服务器发送另一行。但服务器没有。如果服务器关闭,readLine将返回null。但是服务器没有关闭。有几种可能性来解决这个问题。
其余的:您正在为每一行打开并写一个完整的文件。最好在while循环之后执行一次。