Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Java tcp client -> Delphi tcp server 
V
    Опции темы
Su_
Дата 3.1.2010, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



Добрый день. Есть стандартный клиент на java

Код

import java.io.*;
import java.net.*;
import java.util.*;

public class SocketClient
{
  // -------------------------------------------------------
  // main
  // Метод, получающий управление при запуске приложения
  // -------------------------------------------------------
  public static void main(String args[])
  {
    // Массив для ввода строки с клавиатуры
    byte bKbdInput[] = new byte[256];

    // Сокет для связи с сервером
    Socket s;

    // Входной поток для приема данных от сервера
    InputStream is;

    // Выходной поток для передачи данных серверу
    OutputStream os;

    try
    {
      // Выводим строку приглашения
      System.out.println("Socket Client Application" +
        "\nEnter any string or 'quit' to exit...");
    }
    catch(Exception ioe)
    {
      // При возникновении исключения выводим его описание
      // на консоль
      System.out.println(ioe.toString());
    }

    try
    {
      // Открываем сокет
      s = new Socket("192.168.0.9 ",6000);
      if(s.isConnected())
      {
          System.out.println("Ok Connection");
    
      // Создаем входной поток для приема данных от сервера
      is = s.getInputStream();

      // Создаем выходной поток для передачи данных серверу
      os = s.getOutputStream();

      // Буфер для передачи данных
      byte buf[] = new byte[512];

      // Размер принятого блока данных
      int length=1;

      // Рабочая строка
      String str;

      // Вводим команды и передаем их серверу
      while(true)
      {
        // Читаем строку команды с клавиатуры

   length = System.in.read(bKbdInput);
    
   //  bKbdInput="hhhh".getBytes();
    //   bKbdInput[4]="10";
        // Если строка не пустая, обрабатываем ее
        if(true)
        {
          // Преобразуем строку в формат String
          str = new String(bKbdInput, 0);

          // Обрезаем строку, удаляя символ конца строки
          StringTokenizer st;
          st   = new StringTokenizer(str, "\n");
          str = new String((String)st.nextElement());

          // Выводим передаваемую строку команды
          // на консоль для контроля
          System.out.println(">  " + str);

          // Записываем строку в выходной поток,
          // передавая ее таким образом серверу
           if(s.isConnected())
           {
          os.write(bKbdInput,0,bKbdInput.length);
           }
          // Сбрасываем буфер выходного потока
          os.flush();

          // Принимаем ответ сервера
          length = is.read(buf);
          if(length == -1)
            break;

          // Отображаем принятую строку на консоли
          str = new String(buf, 0);
          st   = new StringTokenizer(str, "\n");
          str = new String((String)st.nextElement());
          System.out.println(">> " + str);

          // Если введена строка 'quit', завершаем
          // работу приложения
          if(str.equals("quit"))
            break;
        }
      }
  
      // Закрываем входной и выходной потоки
      is.close();
      os.close();
      // Закрываем сокет
      s.close();

      }

    }
    catch(Exception ioe)
    {
      System.out.println(ioe.toString());
    }

    try
    {
      System.out.println(
        "Press <Enter> to terminate application...");

      System.in.read(bKbdInput);
    }
    catch(Exception ioe)
    {
      System.out.println(ioe.toString());
    }
  }
}



и есть сервер на Delphi
После запуска клиента, вводим текст и он отправляет на дельфи этот текст( В Delphi Сначало срабатывает обработчик на connect потом на execute ).. Все работает..
Но если убрать код ввода текста с клавиатуры и заменить его на 
Код

 bKbdInput="hhhh".getBytes();

то в Дельфи срабатывает оработчик только на connect , а данные не приходят..

Вопрос, что может быть не так,и как решить данный вопрос?)

Это сообщение отредактировал(а) Su_ - 3.1.2010, 17:19


--------------------
user posted image

PM MAIL WWW   Вверх
Su_
Дата 3.1.2010, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



кажется ответ кроется в переносе каретки ) c 
Код

bKbdInput="hhhh\n".getBytes();



--------------------
user posted image

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0391 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.