Клиент
try {
if(socket == null) {
socket = new Socket(ip, 6666);
sin = socket.getInputStream();
sout = socket.getOutputStream();
in = new DataInputStream(sin);
out = new DataOutputStream(sout);
}
if(socket.isConnected()) {
out.writeUTF(command);
out.flush();
line = in.readUTF();
if(line == "getScreen") {
try {
long s;
Context ctx= null;
s = Long.parseLong(in.readLine());
File f = null;
byte[] byteArray = new byte[1024];
FileOutputStream fos = new FileOutputStream(f);
fos = ctx.openFileOutput("Screen.bmp", Context.MODE_PRIVATE);
int sp = (int)(s / 1024);
if (s % 1024 != 0) sp++;
BufferedInputStream bis = new BufferedInputStream(sin);
while (s > 0) {
int i = bis.read(byteArray);
fos.write(byteArray, 0, i);
s-= i;
return null;
}
fos.close();
} catch (IOException e) {
}
}
return line.toString();
} else {
throw new Exception("Socket not alive!");
}
} catch(Exception ex) {
return ex.toString();
}
Сервер
public static void run(File f, Socket clientDialog) {
Runnable r = new Runnable() {
public void run() {
System.out.println("Sending " + f.getName() + "...");
try {
byte[] byteArray = new byte[1024];
FileInputStream fis = new FileInputStream(f.getPath());
long s;
s = f.length();
int sp = (int)(s / 1024);
if (s % 1024 != 0) sp++;
BufferedOutputStream bos = new BufferedOutputStream(clientDialog.getOutputStream());
Thread.sleep(500);
while (s > 0) {
int i = fis.read(byteArray);
bos.write(byteArray, 0, i);
s-= i;
}
bos.flush();
fis.close();
} catch (FileNotFoundException e) {
System.err.println("File not found!");
} catch (IOException e) {
System.err.println("IOException "+e);
} catch (Exception e) {
}
}
};
new Thread(r).start();
}
по делу:
while (s > 0) {
int i = bis.read(byteArray);
fos.write(byteArray, 0, i);
s-= i;
return null;
}
зачем здесь return null;
, если это ошибка исправьте, если нет объясните, я не понимаю зачем 1 разовый цикл.
Из критики по коду:
удаляйте неиспользуемый код:
int sp = (int)(s / 1024);
if (s % 1024 != 0) sp++;
на сервере это нигде не используется.
long s;
s = f.length();
это можно написать в 1 строку long s = f.length();
для ресурсов используйте try-with-resources или try-finally
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Здравствуйте, людиподскажите новичку по вложенным циклам
Есть меню и там группа с чекбоксамиМогу пометить один потом меню исчезает
Всем доброго времени сутокВывожу все данные с таблицы БД в Gridview