Я создал класс runnable (Thread), который подключается к серверу, отправляет и принимает сообщения.Контрольный сокет InputStream и OutputStream из Fragment (Android)
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();
}
}
}
Но все предыдущие коды находятся внутри основного вида деятельности.
Есть ли возможность получить входной поток или выходной поток или весь сокет в фрагменте?
Я попытался добавить сокет внутри передаваемого объекта, а затем передать его фрагменту, но я не был успешным.
Надеюсь, вы можете мне помочь !!!
Избавиться от 'готовности()' испытания. Это не спасет вас от блокировки в 'readLine()', и в любом случае spin-looping - плохая идея. – EJP