Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.16;
Скачать: CL | DM;

Вниз

Клиент TClientSocket Сервер TIdTCPServer не понимают друг друга   Найти похожие ветки 

 
Kacnep ©   (2006-03-10 13:27) [0]

На клиенте использую  cs_Client: TClientSocket;
Неблокирующий режим

В самом начале на событии ОнКоннект с клиента идет отправка версии и сервер получив и сверив версии (байт) отправляет некий дикий буфер. Клиент получает, парсит его. И спустя скажем 1 мин отправляет на сервер что типа таких строк в зависимости от настроения.

cs_Client.Socket.SendText(" ");
или
cs_Client.Socket.SendText("c:\cheat\cheat.exe ");

Сервер пишеться на Инди 10 и Дельфи 6
   id_Srv: TIdTCPServer;
Смотрим ниже код он Execute...
ВООБЩЕ! ничего сервант не получает а токо виснет. :( почему может быть?
Может как то ОнЭкзекуте не верно использую.

ВОПРОС 2 Надо ли выносить все это дело в отдельный поток? - ВЕдь клиентов таких куча будет... Осилит?


procedure Tf_Main.id_SrvConnect(AContext: TIdContext);
var
 clVer:Smallint;
begin
 clVer:=AContext.Connection.IOHandler.ReadSmallInt(false);
 if clVer<>c_Ver then
   AContext.Connection.Disconnect
 else begin
   lb_Users.Items.Insert(0,AContext.Connection.Socket.Binding.PeerIP);
   AContext.Connection.IOHandler.Write(MS);
//    sb_Main.Panels[3].Text:=IntToStr(strtoint(sb_Main.Panels[3].Text)+1);
 end;
end;

procedure Tf_Main.id_SrvExecute(AContext: TIdContext);
var
 s:string;
begin
 lb_Users.Items.Insert(0,AContext.Connection.IOHandler.Host);
 s:=AContext.Connection.IOHandler.ReadLn;
 Addlog(s,Logf);
 Caption:=s;
 //!!!если читер то обновить статус бар и вызвать дисконнект
end;



Спасибо


 
Kacnep ©   (2006-03-10 13:34) [1]

Да забыл добаваить все работает до момента когда раз в мин что то должно придти на сервер :(.
Спасибо


 
Dmitrij_K   (2006-03-10 13:52) [2]

Попробуй SendText("лалала"#13#10)


 
Pavia ©   (2006-03-10 13:53) [3]

Kacnep
Клиент
cs_Client.Socket.SendText("c:\cheat\cheat.exe ");
шлет
"c:\cheat\cheat.exe "
А сервер ждет конца строки #13#10.
При отправки с клиента добавь в конце два символа
cs_Client.Socket.SendText("c:\cheat\cheat.exe "#13#10);


 
Kacnep ©   (2006-03-10 14:05) [4]

Люди! Не поверите что я с вами сделаю если зарабюотает!
СПАСИБО!


 
Сергей М. ©   (2006-03-10 14:23) [5]


> если зарабюотает


А куда оно денется)

Еще как заработает !

Передача терминирующей строку последовательности символов #13#10 - крайне важный момент для работы ReadLn()


 
Kacnep ©   (2006-03-10 14:25) [6]

Нет :(
не заработало :((
Блин буду тестить и разбираться :((
Главное сервак виснет намертво (смотрел на него в течении 10 сек)... :(


 
Сергей М. ©   (2006-03-10 14:48) [7]


> смотрел на него в течении 10 сек


Ну и чего ты на него вылупился, спрашивается ?)

Сам по себе он не заработает - ошибки нужно исправлять ..

Начни с того что обращение к ListBox"у в контексте доп.потока недопустимо


 
Каспер   (2006-03-12 10:21) [8]

Все народ! Все заработало. Сразу... (#13#10) (Не туда не то и не так посылал)
Большое спасибо откликнувшимся!
Удачи и поменьше ошибок в Ваших проектах!



Страницы: 1 вся ветка

Текущий архив: 2006.07.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
2-1151406821
novill
2006-06-27 15:13
2006.07.16
Как проще всего узнать время создания исполняемого файла ?


2-1151413170
Vovanchik
2006-06-27 16:59
2006.07.16
Работа с микрофоном (передача данных по сети)


15-1150125646
inri13666
2006-06-12 19:20
2006.07.16
Crtical or System Service


10-1121847387
serjufa
2005-07-20 12:16
2006.07.16
в листе excel нарисовать стрелки


15-1150446709
LingvoRu
2006-06-16 12:31
2006.07.16
Мощная фраза