Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 控制来自片段的套接字InputStream和OutputStream(Android)_Java_Android_Sockets_Android Fragments - Fatal编程技术网

Java 控制来自片段的套接字InputStream和OutputStream(Android)

Java 控制来自片段的套接字InputStream和OutputStream(Android),java,android,sockets,android-fragments,Java,Android,Sockets,Android Fragments,我已经创建了一个可运行类(线程),它连接到服务器,发送和接收消息 public class ConnectAndReceiveData implements Runnable{ private BufferedReader inputBuffer; private String incomeText; private DataOutputStream outputStream; @Override public void run(){ t

我已经创建了一个可运行类(线程),它连接到服务器,发送和接收消息

public class ConnectAndReceiveData implements Runnable{
    private BufferedReader inputBuffer;
    private String incomeText;
    private DataOutputStream outputStream;

    @Override
    public void run(){
        try {

            InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
            socket = new Socket(serverAddr, SERVERPORT);
            if(socket.isConnected()){
                outputStream = new DataOutputStream(socket.getOutputStream());
                outputStream.writeBytes("Hello");
            }

            inputBuffer = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            while (!Thread.currentThread().isInterrupted()) {
                if (inputBuffer.ready()) {
                    incomeText = inputBuffer.readLine();
                    System.out.println(incomeText);

                }
            }

        } catch (UnknownHostException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
但是前面的所有代码都在主活动中

是否有可能在片段中获取inputStream或outputStream或整个套接字

我试图将套接字添加到一个可打包对象中,然后将其传递给片段,但没有成功


我希望你能帮助我

在主活动中创建了getSocket方法

public void Socket getSocket(){
      return socket
}
为了获得套接字表单片段,我只需在onCreateView方法中编写以下代码

Socket socket = ((MainActivity)getActivity()).getSocket();
摆脱
ready()
测试。它不会使您免于在
readLine()
中阻塞,而且在任何情况下,自旋循环都不是一个好主意。