procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
begin
memo1.lines.add(clientsocket.Receiveln);
end;
Ошибка в передаче данных
Работая в CodeGear RAD Studio 2009 столкнулся с такой проблемой:
Создаю два приложения на основе компонентов TCPClient и TCPServer, передаю строку от клиента к серверу методом TCPClient.SendLn(), ошибки никакой не происходит, но почему то сервер получает сроку не полностью, при этом данный код в Delphi 7 работает совершенно нормально и без всяких проблем, гугливание данной ошибки ничего не дало
Собственно код:
Код:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
S:string;
begin
s:='1';
tcpclient1.Sendln(s);
end;
var
S:string;
begin
s:='1';
tcpclient1.Sendln(s);
end;
Заранее спасибо.
И почитайте справку - работает ли метод с юникодом.
Про юникод в справке ничего не сказано.
Проблему передачи решил другим способом, потоком, но интерес к этой проблеме все - таки остался.
Вот, что написано в справке
Цитата:
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.
просто насколько я помню - вам никто не гарантирует, что данные будут отправлены за один раз. Может быть проблема в этом? Мне просто сложно проверить - 2009 студии нет под рукой.
Сейчас проверил сколько байт отправилось на сокет
"Edit1" - 7 байт
"12345678" - 10 байт
на символ видимо приходиться по 2 байта
Тогда я не понимаю, как продолжить отправку недостающей части.