URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2851
[ Назад ]

Исходное сообщение
"Java socket send and recive answer"

Отправлено NetKnight , 26-Апр-04 18:16 
Народ, объясните, как средствами ява законнектиться к серверу, отослать запрос и получить ответ. У меня что-то не получается нифига. Вот что пытался сделать:
try {
  S = new Socket(tAddr.getText(),80);
  lDlg.add("Connected to server "+tAddr.getText());
  byte b=0;
  OutputStream OS = S.getOutputStream();
  try {
    OS.write(tRequest.getText().getBytes());
    OS.flush();
    OS.write(b);
    OS.flush();
  }
  catch (Exception Exp) {    }
        
  InputStream IS = S.getInputStream();
  try
  {
    while (true){
    byte[] bt = new byte[255];
    int Len = IS.read(bt);
    if (Len < 0)
    {
      lDlg.add("Disconnected");
      return;
    }
    if (Len == 1 && bt[0] == 0) continue;
    String Text = new String(bt);
    lDlg.add(Text);
      }
    }
    catch (Exception Exp) { }
  }
catch (Exception Ex) {
lDlg.add("No web server on this address");
}

Содержание

Сообщения в этом обсуждении
"Java socket send and recive answer"
Отправлено asso , 27-Апр-04 06:01 
Ошибки в основном идеологические, то есть от лени и неправильного подхода к проблеме.

Если хочешь чтобы тебе отвечали то оформляй исходники в соответствии со стандартом http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html и пиши не кусок кода выдранный из контекста а законченный класс с методом main.

Исключения придуманы не просто так.  Не игнорируй их, иначе легко пропустить ошибку.  Перед тем как реализовывать сетевой протокол нужно прочитать стандарт описывающий этот протокол.  Этот код не соответствует стандарту HTTP (ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt), от того он и не работает.

Открой стандарт и найди какими символами должен завершаться HTTP-запрос.  Этот вовсе не \0, а последовательность CRLF.  Кроме того каждая строка запроса так же должна заканчиваться последовательностью CRLF.  Итого в конце должно стоять два CRLF подряд.