Конференция "Сети" » как передать строку в сокет?
 
  • Галинка (27.06.08 17:30) [0]
    сокет вроде принимает по одному символу. Как потом попросить его  ждать следуюшего?

    Спасибо. Желательно на жабе.
  • Rouse_ © (27.06.08 17:36) [1]

    > сокет вроде принимает по одному символу

    Сокету до балды на символы, он принимает и отправляет данные блоками, кои ограничены размерами буфферов отправки/приема. А уж как ты их читаешь - это другое...

    > Желательно на жабе.

    Форум как-бы по Delphi...
  • Галинка (27.06.08 17:38) [2]
    про размер нашла. Но не хочет он строку целиком. Вводит первый символ и останавливается ((
  • Rouse_ © (27.06.08 17:48) [3]
    Может код покажешь? А то мне с этой стороны монитора не видно :)
  • Галинка (27.06.08 17:54) [4]

    private Socket clSock;

    private BufferedReader in;
    private DataOutputStream output;


    private int connect(String host, int port)
    {
     int result = -1;
     try
     {
      clSock = new Socket(InetAddress.getByName(host), port);
      in = new BufferedReader(new InputStreamReader(clSock.getInputStream()));
      output = new DataOutputStream(clSock.getOutputStream());
      lbStatus.setText("Client connection accepted from " + clSock.getInetAddress().toString());
      result = clSock.getPort();
     }

     catch (IOException e)
     {
      System.err.println(e.toString());
      System.exit(-1);
     }

     return result;
    }

           private void sendRequest(String _request)
    {
     try{
      output.flush();
      output.writeBytes(_request);
     }

     catch (IOException er)
     {
      System.err.println(er.toString());
      System.exit(-1);
     }

    }



    может ли это буть потому, что в программе есть только клиентский сокет?
  • Галинка (27.06.08 17:59) [5]
    и вообще

    SocketInputStream - это, тот что передает мне, а

    SocketOutputStream - тот, что передает наружу?
  • Rouse_ © (27.06.08 18:04) [6]

    > SocketInputStream - это, тот что передает мне, а
    >
    > SocketOutputStream - тот, что передает наружу?

    Эмм... вот у меня встречный вопрос, а почему ты спрашиваешь это на форуме о Delphi? :)) Если переводить, то Output это исходящий ;)
    По сабжу: Ну сделай output.writeChars()... Я почем знаю как там в этой яве все делается :)
  • Галинка (27.06.08 18:28) [7]
    Rouse_ ©   (27.06.08 18:04) [6]

    ну во-первых, я думаю для всей клтен-серверной технологии In-/Out- должно быть как то похоже. Чтоб народ не путался.

    А причину я нашла. Просто принимающая система слишком медленна похоже. Надо было sleep встраивать. Ну или wait.
  • Галинка (27.06.08 18:29) [8]
    а вообще, является "хорошим тоном" программировать работу с сокетами в отдельном потоке? Тогда легче просто задержками, например, управлять.
  • Галинка (27.06.08 18:30) [9]
    Ну и конечно спасибо тебе за ответы и за поддержку!!!
  • Сергей М. © (29.06.08 18:49) [10]

    > является "хорошим тоном" программировать работу с сокетами
    > в отдельном потоке?


    "Хорошим тоном" является полное понимание необходимости применения многопоточности в приложении вообще. Сокеты тут вообще ни причем.
 
Конференция "Сети" » как передать строку в сокет?
Есть новые Нет новых   [134433   +21][b:0][p:0.001]