Главная страница
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.038 c
10-1121847387
serjufa
2005-07-20 12:16
2006.07.16
в листе excel нарисовать стрелки


1-1148320591
Андрей Молчанов
2006-05-22 21:56
2006.07.16
Обработать потерю фокуса


2-1151522230
resuS
2006-06-28 23:17
2006.07.16
Запуск приложения. Пользователь в неведении.


6-1141725532
vcat
2006-03-07 12:58
2006.07.16
Компонента


6-1141911722
Hans_Cristian
2006-03-09 16:42
2006.07.16
Передача UDP