【问题标题】:Android Client Implementation ErrorsAndroid 客户端实现错误
【发布时间】:2013-03-21 22:52:39
【问题描述】:

尝试让安卓设备从我拥有的服务器获取数据:

RetreiveFeedTask DoStuff=new RetreiveFeedTask();
            try{
            Work=(DoStuff.execute(Exec)).get();
            }
            catch(Exception e)
            {System.out.print(e+"");}

异步实现:

class RetreiveFeedTask extends AsyncTask<String , Void , String> {

//private Exception e;
String GotBack="empty";
@Override
protected String doInBackground(String... params) {

    try{ 
            Socket socket = new Socket("192.168.1.66", 2727);   
            OutputStream out = socket.getOutputStream();       
            PrintWriter output = new PrintWriter(out);    
            BufferedReader input=new BufferedReader(new InputStreamReader(socket.getInputStream()));
            output.println(params[0]);
            output.flush();
            output.close();
            GotBack="OverWritten";
            GotBack=input.readLine();
            socket.close();                                                 
            }
        catch(Exception e){System.out.print(e+"");}
    return GotBack;
}

}

我的服务器正在发送 ACK: "1\n"

但我在屏幕上看到的是“已覆盖”,这是我从服务器读取数据之前的值。

知道为什么吗?

更新

我正在关闭输出套接字,所以它抛出了异常。现在我没有收到错误,但我得到的值是空的。知道为什么吗?

新代码:

class RetreiveFeedTask extends AsyncTask<String , Void , String> {

//private Exception e;
String GotBack="empty";
@Override
protected String doInBackground(String... params) {

    try{ 
            Socket socket = new Socket("192.168.1.66", 2727);   
            OutputStream out = socket.getOutputStream();       
            PrintWriter output = new PrintWriter(out);    
            BufferedReader input=new BufferedReader(new InputStreamReader(socket.getInputStream()));
            output.println(params[0]);
            output.flush();
            String read="";
            while((read=input.readLine())!=null)
            {
            GotBack+=read;
            }
            output.close();
            socket.close();                                                 
            }
        catch(Exception e){Log.e("MyApp","exception",e);}
    return GotBack;
}

}

【问题讨论】:

    标签: java android tcp client-server


    【解决方案1】:

    是的。执行input.readLine(); 必须抛出您处理和打印的异常。 GotBack 的值现在是“OverWritten”,它在 return GotBack; 上返回。

    【讨论】:

    • 是的。我在 readline 之后放置 GotBack="Overwritten" 并返回“空”。但错误可能是什么?
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2022-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 2013-10-06
    相关资源
    最近更新 更多