Главная страница
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.046 c
15-1150402399
AKS
2006-06-16 00:13
2006.07.16
вакансия: программист delphi на удаленную работу


2-1151653268
fast2
2006-06-30 11:41
2006.07.16
Как вывести в Label содерживое ячейки 2-го столбца...


15-1150293693
JUS
2006-06-14 18:01
2006.07.16
Как закинуть свой готовый сайт в интернет?


3-1147335203
Stanislav
2006-05-11 12:13
2006.07.16
Кодировка в dbf


3-1147781026
p_evghenii
2006-05-16 16:03
2006.07.16
Помогите составить запрос