Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Проблема с TClientSocket и TServerSocket


Автор: MarkedOne 2.5.2008, 20:47
Мне надо передать текст из Memo в Memo через локальную сеть. Я использовал TServerSocket и TClientSocket. Вроде всё правильно, но толком не работает. На клиенте отправляю данные, но на сервере ничего не происходит, второй раз нажимаю на кнопку и сервер отображает их. Т.е. надо два раза отпралять данные чтобы сервер их получил. 

Автор: Poseidon 3.5.2008, 09:00
Ну тут 2 варианта:
1) Подключение нужно проводить еще до момента отправки (не рекомендуется).

Код

procedure TForm2.FormShow(Sender: TObject);
begin
 ClientSocket1.Host:=InputBox('Адрес', 'Введите имя или IP-адрес компьютера ', '127.0.0.1');
 ClientSocket1.Open;
end;

procedure TForm2.Button1Click(Sender: TObject);
var
 i: integer;
begin
 for i := 0 to Memo1.Lines.Count - 1 do
   ClientSocket1.Socket.SendText(Memo1.Lines[i]);
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
 ClientSocket1.Close;
end;


2) Отправлять нужно после соединения, а не во время (рекомендуется smile)

Код
procedure TForm2.Button1Click(Sender: TObject);
begin
 ClientSocket1.Host:=InputBox('Адрес', 'Введите имя или IP-адрес компьютера ', '127.0.0.1');
 ClientSocket1.Open;
end;

procedure TForm2.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
var
 i: integer;
begin
 for i := 0 to Memo1.Lines.Count - 1 do
   ClientSocket1.Socket.SendText(Memo1.Lines[i]);

 ClientSocket1.Close;
end;

Автор: MarkedOne 3.5.2008, 14:35
Poseidon, большое спасибо.
Не подскажите что мне почитать по TclientSocket и TServerSocket?

Автор: Poseidon 3.5.2008, 22:54
Цитата(MarkedOne @  3.5.2008,  14:35 Найти цитируемый пост)
Не подскажите что мне почитать по TclientSocket и TServerSocket?

Нет. Начиная с Delphi 7 использовать sockets не рекомендуется. Они оставлены для обратной совместимости. Рекомендовано использовать Indy. Изучай тучше это направление. http://forum.vingrad.ru/forum/topic-85659.html

Автор: MarkedOne 4.5.2008, 13:05
Цитата(Poseidon @  3.5.2008,  22:54 Найти цитируемый пост)
Начиная с Delphi 7 использовать sockets не рекомендуется.

В том числе WinSock 2.0?

Автор: Poseidon 4.5.2008, 20:40
Цитата(Poseidon @  3.5.2008,  22:54 Найти цитируемый пост)
Начиная с Delphi 7 использовать sockets не рекомендуется
Под sockets я имел ввиду компоненты в dclsocketsX0.bpl Т.е. TClientSocket и TServerSocket. Но никто не говорит что нельзя, просто не рекомендуется. Функции из winsock.dll тоже не рекомендуется, но можно (если очень хочется smile)

Автор: MarkedOne 4.5.2008, 21:38
Всё, спасибо Вам smile 
Тема закрыта

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)