Java: Как отправлять и получать данные с помощью сокета? - PullRequest
1 голос
/ 14 мая 2011

Я создаю промежуточное ПО, где мне нужно постоянно читать, что происходит на моем устройстве, поэтому я создаю этот класс:

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 *
 * @author Valter
 */
public class Middleware {

    public static void main(String args[]) {
        try {
            // ip and port where is my device  
            Socket socket = new Socket("192.168.1.4", 2001);

            DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());

            DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());

            // i need send this parameter to my device 
            dataOutputStream.writeUTF("}Rv!");

            String answer = dataInputStream.readUTF();
            System.out.println("Answer:"+answer);

            dataInputStream.close();
            dataOutputStream.close();
            socket.close();

        } catch (UnknownHostException ex) {
            System.out.println("UNKNOW HOST EXCEPTION");
        } catch (IOException ex) {
            System.out.println(" IOEXCEPTION");
            System.out.println(ex.getMessage());
        }
    }
}

Выход:

IOEXCEPTION Сброс соединения

Что не так с моим классом?

Ответы [ 2 ]

1 голос
/ 14 мая 2011

Я не знаю, является ли это причиной вашей проблемы, но вы не очищаете выходной поток перед тем, как пытаться прочитать ответ из входного потока.Попробуйте:

dataOutputStream.writeUTF("}Rv!");
dataOutputStream.flush();
0 голосов
/ 16 мая 2011

Ваше устройство действительно понимает вывод writeUTF ()? И выдает правильный ввод для readUTF ()? Проверьте Javadoc. Я не думаю, что это вероятно.

«Сброс соединения» обычно означает, что вы записали соединение, которое уже было закрыто другим концом, что уже является ошибкой протокола приложения, и это может указывать на предыдущие ошибки протокола приложения.

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