java android - сокет подключается, но не отправляет и не получает данные - PullRequest
0 голосов
/ 25 февраля 2020

Я застрял в этой проблеме. Я не могу получить даже PIN-сообщение с сервера, и отправка данных на сервер не работает для меня. Однако всякий раз, когда я проверяю socket.isConnected (), он возвращает true. Как я могу исправить эту проблему? Вот мой код для клиентской стороны.

public class Socks {
private Socket sockets;
private OutputStream socketOutput;
private BufferedReader socketInput;

private String ip;
private int port;
private SocksCallback listener=null;

public Socks(String ip, int port){
    this.ip=ip;
    this.port=port;
    Log.d("GEGE","GEGEGEGE");
    connect();
}

public void connect(){
    Log.i("SOCKET","Trying to connect...");
    new Thread(new Runnable() {
        @Override
        public void run() {
            sockets = new Socket();
            InetSocketAddress socketAddress = new InetSocketAddress(ip, port);
            try {
                sockets.connect(socketAddress);
                if(sockets.isConnected()){
                    Log.i("SOCKET","Connected");
                }
                socketOutput = sockets.getOutputStream();
                socketInput = new BufferedReader(new InputStreamReader(sockets.getInputStream()));

                new ReceiveThread().start();

                if(listener!=null)
                    listener.onConnect(sockets);
            } catch (IOException e) {
                if(listener!=null)

                    listener.onConnectError(sockets, e.getMessage());
            }
        }
    }).start();
}

public void disconnect(){
    try {
        sockets.close();
    } catch (IOException e) {
        if(listener!=null)
        // Log.i("SEND_ON_ERROR",e.getMessage());

            listener.onDisconnect(sockets, e.getMessage());
    }
}

public void send(String message){
    try {
        Log.i("SEND_ON_SOCKET",message);
        socketOutput.write(message.getBytes());
    } catch (IOException e) {
        if(listener!=null)

            listener.onDisconnect(sockets, e.getMessage());
    }
}

private class ReceiveThread extends Thread implements Runnable{
    public void run(){
        String message;
        try {
            Log.i("THREAD","WIW");
            while((message = socketInput.readLine()) != null) {   // each line must end with a \n to be received
                Log.d("MSG",message);
                if(listener!=null)
                    listener.onMessage(message);
            }
        } catch (IOException e) {
            if(listener!=null)
                listener.onDisconnect(sockets, e.getMessage());
        }
    }
}

public void setClientCallback(ClientCallback listener){
    this.listener=listener;
}

public void removeClientCallback(){
    this.listener=null;
}

public interface SocksCallback {
    void onMessage(String message);
    void onConnect(Socket sockets);
    void onDisconnect(Socket sockets, String message);
    void onConnectError(Socket sockets, String message);
}

}

Кто-нибудь, кто получил эту проблему и решил ее? Даже ваши идеи будут отличной помощью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...