Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ошибка в передаче данных

2.1K
13 декабря 2009 года
smoki
115 / / 05.11.2006
Здравствуйте Уважаемые!

Работая в CodeGear RAD Studio 2009 столкнулся с такой проблемой:

Создаю два приложения на основе компонентов TCPClient и TCPServer, передаю строку от клиента к серверу методом TCPClient.SendLn(), ошибки никакой не происходит, но почему то сервер получает сроку не полностью, при этом данный код в Delphi 7 работает совершенно нормально и без всяких проблем, гугливание данной ошибки ничего не дало

Собственно код:
 
Код:
procedure TForm1.TcpServer1Accept(Sender: TObject;
  ClientSocket: TCustomIpClient);
begin
memo1.lines.add(clientsocket.Receiveln);
end;


 
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
S:string;
begin
s:='1';
tcpclient1.Sendln(s);
end;


Заранее спасибо.
1
13 декабря 2009 года
kot_
7.3K / / 20.01.2000
в приведенном вами примере что вы получаете на сервере?
И почитайте справку - работает ли метод с юникодом.
2.1K
14 декабря 2009 года
smoki
115 / / 05.11.2006
При отправке "123456789" на сервере получаю "12345";"Edit1" получаем "Edit"
Про юникод в справке ничего не сказано.
Проблему передачи решил другим способом, потоком, но интерес к этой проблеме все - таки остался.
Вот, что написано в справке
Цитата:
Sendln sends a delimited chunk of data to the socket. The delimeter cannot be part of the character set. Sendln fills the buffer until it reaches the delimeter.

1
14 декабря 2009 года
kot_
7.3K / / 20.01.2000
просто насколько я помню - вам никто не гарантирует, что данные будут отправлены за один раз. Может быть проблема в этом? Мне просто сложно проверить - 2009 студии нет под рукой.
2.1K
14 декабря 2009 года
smoki
115 / / 05.11.2006
Да, вы действительно оказались правы.
Сейчас проверил сколько байт отправилось на сокет
"Edit1" - 7 байт
"12345678" - 10 байт
на символ видимо приходиться по 2 байта

Тогда я не понимаю, как продолжить отправку недостающей части.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог