![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
pomoghite gde tut oshibka
krimer © (2001-11-10 17:52:00)S> hI
S> please pomoghite!!!
S> u mnea tut problema s obrabotkoi sobitii i problema s
S> ServerSocket.ClientRead := MyObject.ClientRead; daiot oshibku please
S> podkoriktiruite chto u menea tut ne tak, blin nikto tolkom ne skazal
S> chto tut ne tak!
S> spasibo zaranee
S> program sturm;
S> {$APPTYPE CONSOLE}
S> uses
S> SysUtils,
S> ScktComp;
S> type
S> TMyObject = class
S> public
S> procedure OnClientConnect(Sender: TObject; Socket: TCustomWinSocket);
S> procedure ClientRead(Sender: TObject; Socket: TCustomWinSocket);
S> end;
S> var
S> ServerSocket : TServerSocket;
S> MyObject: TMyObject;
S> procedure TMyObject.OnClientConnect(Sender: TObject; Socket: TCustomWinSocket);
S> var
S> i: integer;
S> begin
S> WriteLn("Client connect " + Socket.RemoteAddress + ":" + IntToStr(Socket.RemotePort));
S> {Посылаем ВСЕМ клиентам сообщение из Edit1}
S> for i := 0 to ServerSocket.Socket.ActiveConnections-1 do begin
S> ServerSocket.Socket.Connections[i].SendText("+OK Sturm.NET Server v0.1 ready <" + "localhost" + ">");
S> end;
S> end;
S> procedure TMyObject.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
S> begin
S> WriteLn("Client message " +Socket.ReceiveText);
S> end;
S> begin
S> ServerSocket := TServerSocket.Create(nil); // создаем объект - серверное гнездо
S> ServerSocket.Port := 4567; // порт задан "от фонаря" !!
S> ServerSocket.ServerType := stNonBlocking; // для простоты - неблокирующий режим
S> MyObject := TMyObject.Create; // создаем объект - обработчик событий серв.гнезда
S> ServerSocket.OnClientConnect := MyObject.OnClientConnect; // назначаем обработчик на подключение ублюдка
S> ServerSocket.ClientRead := MyObject.ClientRead; // назначаем обработчик на прием месаг ублюдка
S> WriteLn("Sturm.NET Server v0.1");
S> try
S> ServerSocket.Active := True; // старт серв.гнезда
S> ServerSocket.Active := False; // halt
S> while not Application.Terminated do begin
S> Application.ProcessMessages; // process messages in the message queue
S> Sleep(10); // don"t use 100% CPU
S> end;
S> finally
S> ServerSocket.Free; // разрушаем серв.гнездо
S> MyObject.Free; // разрушаем объект-обработчик
S> end;
S> end.
krimer (2001-11-16 20:49:00) [1]tak blin ne pashet ono k serveru konektitsea a vot v okne servake nifiga ne pishetsea a mnogie mne govoreat chto readln ne obrabativaet sobitie popitaitesi eto otkompiliropvati tak ono ne budet ispolneat postavleanie pered nim zadachi
Digitman (2001-11-15 09:06:00) [2]>krimer
Тебе уже дали дельный совет ! Что еще-то хочешь ?
...
try
ServerSocket.Active := True; // старт сервера
ReadLn; // ждем нажатия <ENTER>, чтобы завершить работу сервера
ServerSocket.Active := False; // стоп сервера
finally
ServerSocket.Free;
MyObject.Free;
end;
...
krimer (2001-11-14 14:30:00) [3]nu narod daite delinii sovet! atgo uje zadolbalsea!!!
please!!
Digitman (2001-11-12 14:08:00) [4]>krimer
1.Как только ты задействуешь модуль Forms, ты потеряешь многие из преимуществ консольного приложения.
2.
S> while not Application.Terminated do begin
S> Application.ProcessMessages; // process messages in the message queue
S> Sleep(10); // don"t use 100% CPU
S> end;
Это зачем ? TServerSocket создает собственное окно и обрабатывает сообщения самостоятельно
Digitman (2001-11-12 14:00:00) [5]>kravt
"1.Добавить в uses ..,Forms,.." - это еще зачем ?
krimer (2001-11-11 13:48:00) [6]spasibo
kravt (2001-11-10 21:22:00) [7]1.Добавить в uses ..,Forms,..
2.Вместо
> ServerSocket.ClientRead := MyObject.ClientRead;
cделать
ServerSocket.OnClientRead := MyObject.ClientRead;
3. И закомментировать
ServerSocket.Active := False
Удачи. Александр.