Я новичок в Java, поэтому мне нужна помощь. Я пишу приложение, в котором onClick отправит String на сервер, а серверу нужно вернуть изображение с помощью сокета. Таким образом, моя клиентская сторона - Android, а на стороне сервера - ПК - java. Я думаю, что моя серверная сторона в порядке (потому что он печатает все команды system.out.print), но моя клиентская сторона не хороша. Скажите, пожалуйста, где моя ошибка? Благодаря!Отправка изображения через сокет (Java PC - Android)
Вот код моего сервера (PC) на стороне (разъем поставляется через параметр функции):
try {
dataInputStream = new DataInputStream(socket.getInputStream());
poruka = "" + dataInputStream.readUTF();
System.out.print(poruka);
int bytecount = 2048;
byte[] buf = new byte[bytecount];
OutputStream OUT = socket.getOutputStream();
BufferedOutputStream BuffOUT = new BufferedOutputStream(OUT, bytecount);
FileInputStream in = new FileInputStream("screenShot.jpg");
int i = 0;
while ((i = in.read(buf, 0, bytecount)) != -1) {
BuffOUT.write(buf, 0, i);
System.out.print("check" + buf[0]);
BuffOUT.flush();
}
in.close();
BuffOUT.close();
System.out.print("over");
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
socket.close();
dataInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
и вот мой клиент (Android) сторона:
Socket socket = null;
DataOutputStream dataOutputStream = null;
try {
socket = new Socket(IPadresa, 8888);
dataOutputStream = new DataOutputStream(socket.getOutputStream());
slanje = "hy string";
dataOutputStream.writeUTF(slanje);
FileOutputStream outToFile = new FileOutputStream("slika.jpg");
int bytecount = 2048;
byte[] buf = new byte[bytecount];
InputStream IN = socket.getInputStream();
BufferedInputStream BuffIN = new BufferedInputStream(IN, bytecount)
int i = 0;
int filelength = 0;
while((i = BuffIN.read(buf, 0, bytecount)) != -1) {
filelength += i;
outToFile.write(buf, 0, i);
outToFile.flush();
}
IN.close();
BuffIN.close();
dataOutputStream.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
больше информации: На стороне сервера я вижу строку, которая отправляется от клиента. И у меня есть System.out.print («over»); команда печатается каждый раз, когда я отправляю String на сервер. Также у меня есть System.out.print («check» + buf [0]); распечатывается с сервера много раз. Поэтому я думаю, что с клиентской стороной что-то не так.
И моя клиентская сторона не выбрасывает никаких Исключения ... но я заметил, что клиентская сторона никогда не пропускала цикл while. Он застрял там.
Пожалуйста, сообщите нам, что заставляет вас думать, что на стороне клиента есть проблема. Что происходит? Любые исключения? Каков результат на стороне клиента и сервера? –
Я отредактировал свой вопрос, чтобы вы могли прочитать, что заставляет меня думать, что на стороне клиента есть проблема. Спасибо за помощь! – jpetrucci