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()
中阻塞,而且在任何情况下,自旋循环都不是一个好主意。