Android客户端未收到服务器回复

用户名

我有一个Android客户端,可将数据发送到Java服务器。经过一些服务器处理后,我希望服务器回复给客户端,但是我无法上班。

最初,客户端和服务器都卡在上readLine(),因此我添加\n了两者,但仍然没有变化。经过长时间的搜索后,我尝试关闭客户端连接,然后服务器运行,但是客户端给出了错误,因为套接字已关闭。正确的方法是什么?为什么?

客户代码:

private class sendToServer extends AsyncTask<JSONObject, Void, String> {
    @Override
    protected String doInBackground(JSONObject... userData) {
        Socket clientSocket;
        try {
            clientSocket = new Socket("10.0.2.2", 7878);
            BufferedOutputStream  outToServer = new BufferedOutputStream(clientSocket.getOutputStream());
            outToServer.write( (userData[0].toString() + '\n').getBytes() );
            outToServer.flush();

            BufferedReader inFromServer = new BufferedReader(new Inpu    tStreamReader(clientSocket.getInputStream()));
            String reply = inFromServer.readLine();

            outToServer.close();
                Log.d("",reply);

            inFromServer.close();
            clientSocket.close();

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

服务器代码:

@Override
public void run() {
    try {
        BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        StringBuilder builder = new StringBuilder();
        String line;
        while ((line = inFromClient.readLine()) != null)
                builder.append(line);

        BufferedOutputStream outToClient = new BufferedOutputStream(connection.getOutputStream());
        outToClient.write( ("ACK" + '\n').getBytes() );
        outToClient.flush();

            inFromClient.close();           
            putToClient.close();

        parseIncomingData(builder.toString());

    } catch (Exception e) {
        System.out.println(e);
    } finally {
        try {
            connection.close();
        } catch (IOException e) {
            System.out.println(e);
        }
    }
}
用户名

看起来您的服务器将继续读取行,直到返回null为止。直到流另一端关闭时,这种情况才会发生。作为测试,只需执行一个readLine(摆脱while循环),然后查看对于单个消息是否一切正常。

或者,您可以从客户端发送一个空字符串(或某个“特殊”终止符字符串)作为最后一个字符串-然后您可以在服务器上检查该“特殊”字符串或空字符串以打破while readline循环。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android客户端未收到服务器回复

来自分类Dev

SignalR客户端未收到服务器消息

来自分类Dev

服务器似乎未收到客户端消息ANDROID

来自分类Dev

在服务器端客户端-服务器TCP上未收到单独的值

来自分类Dev

服务器未收到客户端的socket.io消息

来自分类Dev

简单的Netty Echo服务器/客户端未收到消息

来自分类Dev

UDP客户端未收到UDP服务器消息

来自分类Dev

Laravel回显服务器客户端未收到事件

来自分类Dev

C# TCP 客户端发送消息,但服务器未收到消息

来自分类Dev

TCP 服务器未收到来自 TCP 客户端的消息 (Java)

来自分类Dev

使用 gen_tcp 的 Erlang 客户端-服务器示例未收到任何信息

来自分类Dev

服务器未从客户端收到更多消息

来自分类Dev

WCF服务客户端未收到流消息

来自分类Dev

GCM android客户端未收到消息

来自分类Dev

Java Socket为什么服务器无法回复客户端

来自分类Dev

Android中的蓝牙服务器和客户端

来自分类Dev

Android服务器和客户端连接

来自分类Dev

C#服务器和Android客户端

来自分类Dev

Android中的蓝牙服务器和客户端

来自分类Dev

客户端-服务器android聊天应用-NetworkOnMainThreadException

来自分类Dev

ZeroMQ C ++客户端未收到

来自分类Dev

ADM客户端未收到消息

来自分类Dev

客户端-服务器插座

来自分类Dev

测试客户端服务器

来自分类Dev

客户端/服务器编程

来自分类Dev

iOS客户端服务器

来自分类Dev

SocketChannel 客户端-服务器

来自分类Dev

客户端从服务器收到SOAP错误:验证失败的ebay

来自分类Dev

为什么服务器应用程序会收到50%的客户端消息?