【问题标题】:Wait server for 70 seconds等待服务器 70 秒
【发布时间】:2015-05-12 06:13:29
【问题描述】:

我是这个论坛的新手。我在 Android 中用线程制作了一个 TCP 客户端。此代码适用于我的应用:

  class TCPClient extends Thread
 {
     String add;

     public TCPClient(String IPa)
     {
       add=IPa;
     }

     public void run()
     {
         try
         {
             InetAddress serverAddr = InetAddress.getByName(add);
             socket = new Socket(serverAddr, SERVERPORT);

             //write part: i write to server
             PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
             out.print("INIT");
             out.flush();

            //read part: I receive a message from server

            byte[] bytes = new byte[1000];


             StringBuilder x = new StringBuilder();

             int numRead = 0;
             if ((numRead = socket.getInputStream().read(bytes)) >= 0)
             {
               x.append(new String(bytes, 0, numRead));
             }

             if(x.toString().equals("INIT_ACK"))
                 //position_req();
              getActivity().runOnUiThread(new Runnable() {

                  public void run()
                  {
                   Toast.makeText(getActivity().getApplicationContext(),"Connesso",Toast.LENGTH_LONG).show();

                  }
              });
         }

         catch (UnknownHostException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         } catch (Exception e) {
             e.printStackTrace();
         }


     }

但是我有这个问题:服务器可能会在 70 秒后回复,所以我需要放置一个等待控件并监听服务器是否给我发送了回复。 我该怎么做? 谢谢你的回答。

【问题讨论】:

    标签: android multithreading sockets tcp client


    【解决方案1】:
    socket.setSoTimeout(70*1000);
    

    所以,你的方法会很好用。我在 2009 年做的第一个 Android 应用程序就使用了这种方法。许多应用程序、架构师和团队讨厌它并希望 AsyncTask 围绕 WRT 处理线程的方式各不相同,并且快进到几个月前,当我们的高价移动咨询公司签约放弃 Async 任务并转到线程时模型。哈哈。他们使用 Otto 而不是 runOnUIThread,但差异相同。 祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-12
      • 2017-03-04
      • 2022-08-24
      • 1970-01-01
      • 2013-10-25
      • 2021-04-21
      • 2018-06-03
      • 2023-03-29
      相关资源
      最近更新 更多