首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双向socket通信: socket关闭

双向socket通信: socket关闭
EN

Stack Overflow用户
提问于 2014-03-19 12:35:25
回答 1查看 125关注 0票数 0

我正在尝试在两部手机之间发送和接收数据。现在,我可以将数据从一个设备(设备1)发送到另一个设备(设备2),但是,当我在同一设备(设备1)中读取数据时,我收到以下错误:

代码语言:javascript
复制
java.net.SocketException: Socket is closed

我正在使用以下代码读取数据:

代码语言:javascript
复制
SocketServerReadThread socketServerReadThread = new SocketServerReadThread(socket);
 socketServerReadThread.run();

 private class SocketServerReadThread extends Thread {

      private Socket mySocket;

      SocketServerReadThread(Socket socket) {
          mySocket = socket;
      }

      @Override
      public void run() {


        try {
            inputStream = mySocket.getInputStream();
            byte[] buffer = new byte[1024];
            byteArrayOutputStream = new ByteArrayOutputStream(1024);
            int bytesRead;

            while ((bytesRead = inputStream.read(buffer)) != -1){
                   byteArrayOutputStream.write(buffer, 0, bytesRead);
                   response += byteArrayOutputStream.toString("UTF-8");
               }

            MainActivity.this.runOnUiThread(new Runnable() {
                 @Override
                 public void run() {
                     msgRead.setText(" Response: "+response);
                 }
                });


        } catch (IOException e1) {
            // TODO Auto-generated catch block

            e1.printStackTrace();
            message += "Read Something wrong! " + e1.toString() + "\n";
        }
      }
}

如果有人能帮我解决这个问题,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2014-03-19 12:59:30

代码语言:javascript
复制
 private class SocketServerReadThread extends Thread {
 private Socket mySocket;

  SocketServerReadThread(Socket socket) {
      this.mySocket = socket;
  }

  BufferedReader input;
  input = new BufferedReader(new InputStreamReader(
                    this.mySocket.getInputStream()));


  @Override
  public void run() {
 while (!Thread.currentThread().isInterrupted()) {

            try {

                String read = input.readLine();
                System.out.printf("Message read is -> %s%n", read);
                if (read != null) {

msgRead.setText(" Response: "+response);   
}
}catch(Exception e){}}}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22496292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档