Я пытаюсь написать код, который позволит мне подключиться к удаленному серверу и получить от него ответ. Удаленный адрес: www.euref-ip.net:2101Не удается получить ответ с удаленного сервера
При попытке подключиться к нему с веб-страницы он отлично работает. Однако, когда я пытаюсь подключиться через мой код Java, я не могу получить ответ. Вот мой код до сих пор:
public class Client implements Runnable{
private String nServer = "";
private int nPort = 0;
public Client(String server, int port){
this.nServer = server;
this.nPort = port;
}
@Override
public void run() {
try {
SocketAddress sockaddr = new InetSocketAddress(nServer, nPort);
Socket s = new Socket();
s.connect(sockaddr, 10 * 1000);
if (s.isConnected()) {
s.setSoTimeout(20 * 1000);
DataOutputStream out = new DataOutputStream (s.getOutputStream());
DataInputStream in = new DataInputStream (s.getInputStream());
while (true) {
// send a message to the server
String requestmsg = "GET/HTTP/1.0\r\n";
requestmsg += "User-Agent: Client v1\r\n";
requestmsg += "Accept: */* \r\n";
requestmsg += "Connection: keep alive\r\n";
out.write(requestmsg.getBytes());
out.flush();
// receive a response
int ln = in.available();
byte [] bytes = new byte [ln];
in.read(bytes);
System.out.println(new String(bytes) + "\n");
Thread.sleep(2000);
}
}
}
catch (UnknownHostException ex) {System.out.println(ex);}
catch (IOException ex) {System.out.println(ex);}
catch (InterruptedException ex) {System.out.println(ex);}
}}
Сейчас переменная ln
всегда 0, и я читаю пустой ответ. Что я делаю неправильно? Какие-либо предложения? Любая помощь будет оценена по достоинству.
ОК, спасибо, я попробую. Однако первая добавленная строка не появляется в запросе, когда я пытаюсь подключиться из одного и того же веб-браузера к серверу, запущенному из Java-кода, таким образом я могу распечатать запрос. –
Это сработало. Кажется, что критическая вещь - лишняя пустая строка в конце. Спасибо. –