Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2011, 21:08   #1
RADE
Новичок
Джуниор
 
Регистрация: 12.07.2011
Сообщений: 2
По умолчанию Проблема с компонентами TTcpClient, TTcpServer

Всем привет. Решил научиться работать с сетью, для этого использую компоненты TTcpClient и TTcpServer. Проблема в том, что после отправки строки функцией sendln второй раз отправить уже не получается. Пишу в RAD Studio 2010.

Сервер:
Код:
procedure TForm1.tcpServerAccept(Sender: TObject;
  ClientSocket: TCustomIpClient);
begin
  lblChat.Caption := lblChat.Caption+#13+#10+ClientSocket.Receiveln;
end;
Клиент:
Код:
procedure TForm2.btnSendClick(Sender: TObject);
begin
  tcpClient.Sendln('Client: '+txtSendData.Text);
end;
Если нужно, напишу весь код.

Последний раз редактировалось RADE; 12.07.2011 в 21:25.
RADE вне форума Ответить с цитированием
Старый 13.07.2011, 01:41   #2
lux16
Форумчанин
 
Аватар для lux16
 
Регистрация: 11.02.2009
Сообщений: 305
По умолчанию

Вот выдержка из примера от Borland:
Код:
procedure TForm1.TcpServer1Accept(sender: TObject;
  ClientSocket: TCustomIpClient);
var
  s: string;
  DataThread: TClientDataThread;
begin
  // create thread
  DataThread:= TClientDataThread.Create(true);
  // set the TagetList to the gui list that you
  // with to synch with.
  DataThread.TargetList := memRecv.lines;

  // Load the Threads ListBuffer
  DataThread.ListBuffer.Add('*** Connection Accepted ***');
  DataThread.ListBuffer.Add('Remote Host: ' + ClientSocket.LookupHostName(ClientSocket.RemoteHost) +
   ' (' + ClientSocket.RemoteHost + ')');
  DataThread.ListBuffer.Add('===== Begin message =====');
  s := ClientSocket.Receiveln;
  while s <> '' do
  begin
    DataThread.ListBuffer.Add(s);
    s := ClientSocket.Receiveln;
  end;
  DataThread.ListBuffer.Add('===== End of message =====');

  // Call Resume which will execute and synch the
  // ListBuffer with the TargetList
  DataThread.Resume;

end;
Проще простого, я как то сам такой фигней занимался
Хочу быть лучшим, но пока что я только обычный =(
lux16 вне форума Ответить с цитированием
Старый 13.07.2011, 05:44   #3
RADE
Новичок
Джуниор
 
Регистрация: 12.07.2011
Сообщений: 2
По умолчанию

Спасибо за помощь. Столкнулся еще с одной проблемой, но успешно решил ее самостоятельно

Еще один вопрос. Какое событие tcpClient вызывается, когда он принимает данные с сервера?

Последний раз редактировалось RADE; 13.07.2011 в 06:17.
RADE вне форума Ответить с цитированием
Старый 13.07.2011, 11:59   #4
lux16
Форумчанин
 
Аватар для lux16
 
Регистрация: 11.02.2009
Сообщений: 305
По умолчанию

Хм, в этом то вся и проблема, если хочешь иметь полную функциональность программы, то тебе необходимо иметь как сервер, так и клиент
Хочу быть лучшим, но пока что я только обычный =(
lux16 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компоненты TcpClient и TCPServer Dima DDM Общие вопросы Delphi 0 10.12.2010 18:42
TCPServer, TCPClient seobot Общие вопросы Delphi 2 03.05.2010 23:56
TCPClient, TCPServer : SendBufer() Zeraim Работа с сетью в Delphi 4 27.12.2009 21:22
TcpClient и TcpServer DOLBY Работа с сетью в Delphi 5 17.12.2007 10:43
TCPServer и TCPClient Antoha Работа с сетью в Delphi 19 06.10.2007 12:01