java - 我无法从服务器端套接字读取

标签 java android sockets

首先,Android 应用程序将连接到服务器(PC)。 然后android会发送一条消息。 最后,Android 应用程序应该从服务器接收一条消息。

当我将消息从 android 发送到服务器时,一切顺利。 但是,当涉及到从 Android 应用程序内的套接字读取时,我无法接收到任何内容。

这是服务器代码

    ServerSocket Sock = new ServerSocket(7777);
    System.out.println("Waiting for connection...\n");
    Socket connectionSocket = Sock.accept();
    System.out.println("Client In...");
    BufferedReader inFromClint = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
    PrintWriter printwriter = new PrintWriter(connectionSocket.getOutputStream());
    String txt = inFromClint.readLine();
    System.out.println(txt);
    String MsgToClient = "{\"LoginFlag\":\"N\"}";  //{"LoginFlag":"P"}
    printwriter.write(MsgToClient);
    printwriter.flush();
    printwriter.close();
    System.out.println("\nMsg Sent");
    Sock.close();

这是 Android 应用程序的示例:

new Thread(new Runnable() {
    @Override
    public void run() {
       try
          {
             BufferedReader bufferedReader = null;
             PrintWriter printwriter = null;
             port = 7777;
              client = new Socket("192.168.1.2", port);
              printwriter = new PrintWriter(client.getOutputStream());
              printwriter.write(SMsgLog);
              printwriter.flush();
              printwriter.close();
              bufferedReader = new BufferedReader(new InputStreamReader(client.getInputStream()));
              if( bufferedReader.ready() )
              {
                  RJasonLog = bufferedReader.readLine();   //rcv as jason
              }
              else
              {
                 RJasonLog = null;
              }
              if (RJasonLog != null)
              {
                 JSONObject objectRcv = new JSONObject(RJasonLog);
                  if (objectRcv != null)
                  {
                     RMsgLog = objectRcv.getString("LoginFlag");  //Jason Key from the server
                   }
               }
               RMsgLog = "N";
               if(RMsgLog.equals("N"))
               {                                     
                  alert.showAlertDialog(Login.this, "Login failed..", "Username/Password is incorrect", false);
               }
                else
                      alert.showAlertDialog(Login.this, "Login failed..", "Please Try Again", false);


               client.close();
           }

           catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            }
     }
 }).start();

最佳答案

客户端正在尝试读取一行。但服务器没有发送带有 printwriter.write(MsgToClient); 的行。更改为 printwriter.write(MsgToClient + "\n"); 以发送一行。

关于java - 我无法从服务器端套接字读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35815681/

相关文章:

android - 如何在 Android Studio 中使用相应的应用内购买 API 为亚马逊应用商店和谷歌 Play 商店构建 apk

linux - 如何确定用户空间进程是否连接到netlink内核模块?

java - AsyncTask 更好的通信协议(protocol)

java - 运行项目或构建 apk 时出错

java - 在没有自定义样式的情况下在 Android Spinner 中的项目之间添加更多空间?

java - 从 onActivityResult 参数传递的 Intent 如何与我的应用程序配合使用?

sockets - 如何安全设置Unix域套接字的组所有权?

javascript - 最后一个文件完成后,ajax 多文件上传警报

Java 错误 : Could not find or load main class

android - 更新 fragment 布局