Я работаю над приложением, состоящим из сокетов. Он должен передать значение String от клиента (Android-устройство) к серверу (мой компьютер с Ubuntu). В коде на стороне сервера мне нужно сохранить значение, передаваемое через сокет в переменной String.Как получить строку из DataInputStream в Java?
Вот код, который я использую, чтобы отправить значение String на сервер.
//instantiating the socket object for the client
Socket client = new Socket("192.168.0.103", port);
OutputStream outToServer = client.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
String msg = "My String Value";
//Message to be send to server
out.writeUTF(msg);
//Closing the client's socket. No connections after this.
client.close();
И вот код, который я использую, чтобы получить значение String на сервере.
//Server object. Stores the reference to the socket object returned by the accept()
//The returned socket object contains established connection to the client.
Socket server = serverSocket.accept();
DataInputStream in = new DataInputStream(server.getInputStream());
System.out.println(in.readUTF());
//This prints "My String Message"
//Something like this i want to do.
String msg = in.readUTF();
//closing the server socket. No connection now.
server.close();
Прямо сейчас, что происходит это программа, на стороне сервера с застрять на линии:
String msg = in.readUTF();
Что такое правильный способ хранения значения типа String из DataInputStream в переменную String?
Вы читаете его дважды, но только записываете его один раз. Вы не можете прочитать его дважды, если вы только пишете его один раз. –
Хороший улов !. Но все же я ищу лучший способ сделать это. – priyankvex
У вас уже есть лучший способ сделать это, подчиняясь только 16-битовому ограничению. – EJP