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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2010, 11:14   #1
registr911
Новичок
Джуниор
 
Регистрация: 25.08.2010
Сообщений: 2
По умолчанию Проблема в связке TcpClient TcpServer

Пишу програму с использованием TcpClient TcpServer
Клиент и сервер на разных машинах, все работает нормально но
проблема в том что когда закрываю клиента то сервер начинает загружать ЦП на 99% (просто ужас)
Подскажите пожалуста как это побороть ???
Клиент:
Код:
type
  TForm1 = class(TForm)
    cs: TTcpClient;
.............
procedure TForm1.Button2Click(Sender: TObject);
var s:string;
begin
cs.Sendln('2');
s:=cs.receiveln; Memo1.lines.add(s);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
cs.Disconnect;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
cs.Connect;
end;
Сервер:
Код:
type
  TForm1 = class(TForm)
    Server: TTcpServer;
    procedure ServerAccept(Sender: TObject; ClientSocket: TCustomIpClient);
..................
    procedure OBRABOTKA(cl: TCustomIpClient);

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
server.Active:=false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
server.RemotePort:='9918';
server.Active:=true;
server.Open;
end;

procedure TForm1.ServerAccept(Sender: TObject; ClientSocket: TCustomIpClient);
begin
OBRABOTKA(ClientSocket);
end;

procedure OBRABOTKA(cl: TCustomIpClient);
var s:string;
begin
while cl.Connected do
begin
s:=cl.Receiveln();
if s='' then continue; 
Form1.Memo1.Lines.Add(s);
cl.Sendln('Ok! '+cl.RemoteHost+' : '+cl.RemotePort);
if s='2' then   // Здесь я запускаю другое приложение
end;
end;

Последний раз редактировалось Stilet; 26.08.2010 в 11:36.
registr911 вне форума Ответить с цитированием
Старый 26.08.2010, 11:54   #2
registr911
Новичок
Джуниор
 
Регистрация: 25.08.2010
Сообщений: 2
По умолчанию

Спасибо огромное Вашему форуму вчера весь вечер просидел и не как не мог допереть чего оно не работает.
А сегодня написал на форуме и через 37 минут допер. Ну дочего же техника дошла.
Так что уже все работает.
registr911 вне форума Ответить с цитированием
Старый 26.08.2010, 12:55   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

закон подлости
выложи решение для будущих ищущих.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi] TCPserver, TCPclient MASSIOMO Работа с сетью в Delphi 14 29.07.2010 17:53
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