Я довольно новый в java, и это мой код. Я хочу написать простой java socket explorer , что вы вводите «хост» и «путь», и он отправит http-запрос для этого хоста, а затем сохранит html-файл или изображение или т. Д. На вашем компьютере. Проблема в том, что сокет получает HTTP-ответ, но программа не может сохранить какую-либо вещь.program сделать файл, но файл пуст. Я знаю, что это проблема нижней строки, но я не знаю решения? в то время как ((а = s.getInputStream(). Прочитать (inputline))! = -1) любая помощь, пожалуйста,Что такое вывод (socket.getInputStream(). Read (byte []))?
public class explorer {
private static Socket s;
@SuppressWarnings("unused")
public static void main(String[] args)
{
try
{
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
String host ="google.com";
String path ="/images/srpr/logo11w.png";
s = new Socket(host, 80);
PrintWriter pw = new PrintWriter(s.getOutputStream());
pw.println("GET " + path + " HTTP/1.1");
pw.println("Host:"+host);
pw.println("");
pw.flush();
String[] parts = path.split("/");
String filename = parts[parts.length-1];
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
byte [] inputline =new byte[2000];
byte [] inputline2 =new byte[300000];
int a=0;
int resultlenght=0;
FileOutputStream fos=new FileOutputStream("C:/Users/mahmoud/Desktop/"+filename);
while ((a=s.getInputStream().read(inputline)) != -1)
{
System.arraycopy(inputline,0, inputline2,resultlenght,a);
resultlenght+=a;
}
for(a=0;;a++)
{
if(inputline2[a]==13 && inputline2[a+1]==10 && inputline2[a+2]==13 && inputline2[a+3]==10)
{
break;
}
}
byte [] inputline3 =new byte[300000];
System.arraycopy(inputline2, a+4, inputline3, 0, inputline2.length-a-4);
fos.write(inputline3,0,inputline3.length);
fos.flush();
fos.close();
in.close();
}
catch (UnknownHostException e) {
System.out.println("Exception: "+e);
}
catch (Exception ex) {
System.out.println("Exception: "+ex);
}
}
}
действительно спасибо поэтому почему, когда я запускаю код, он останавливается на этой строке и не меняет значение переменной a на -1 –