Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 046

/ вопрос открыт /

Привет эксперты, проблема в следующем: создаю thread, в нем создаю
TServerSocket, делаю процедуру procedure ThServer.FServerRead(Sender: TObject; Socket: TCustomWinSocket);
почему она не работает, то есть шлю запрос на сервер а он не приходит, хотя соединение происходит.

DimonZ Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: DimonZ (статус: Посетитель)
Вопрос отправлен: 4 апреля 2012, 21:45
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 6 апреля 2012, 16:09; участников в обсуждении: 2.
Вадим К

Вадим К (статус: Академик), 5 апреля 2012, 13:59 [#1]:

сокет в блокирующем режиме?
Галочка "подтверждения прочтения" - вселенское зло.
DimonZ

DimonZ (статус: Посетитель), 5 апреля 2012, 15:50 [#2]:

Нет
DimonZ

DimonZ (статус: Посетитель), 5 апреля 2012, 15:53 [#3]:

в execute нужно указывать на продцедуру?
То есть нужно писать такую строку -FServer.OnClientRead:=FServerRead; ?
Вадим К

Вадим К (статус: Академик), 6 апреля 2012, 12:59 [#4]:

последний комментарий не совсем понятен.
Может сорцы покажете?
Галочка "подтверждения прочтения" - вселенское зло.
DimonZ

DimonZ (статус: Посетитель), 6 апреля 2012, 16:09 [#5]:

unit UThServer;
 
interface
 
 
 
uses
  SysUtils, Dialogs, Classes, ScktComp, Windows;
 
const BUF_SIZE = 4096;
 
type
  TSCThread = class(TServerClientThread);
 
 
type
  ThServer = class(TThread)
 
 
 
  private
 
  protected
 
    procedure Execute; override;
  public
    procedure FServerRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure FServerError(Sender: TObject;Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    Procedure ClConnect(Sender: TObject; Socket: TCustomWinSocket);
  end;
 
implementation
 
Uses UTransfer;
 
var
FServer:TServerSocket;
 
 
procedure ThServer.FServerRead(Sender: TObject; Socket: TCustomWinSocket);
var
S,sf,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,D,df,Path,OldFile:string;
P:PChar;
i,n,Count,FsSize:integer;
Buffer:Array [0..BUF_SIZE] of char;
begin
N:=0;
S:=Socket.ReceiveText;
 
while length(S) > 0 do begin
i:=pos('|',S);
sf:=copy(S,1,i-1);
delete(S,1,length(sf)+1);
N:=N+1;
if N = 1 then s1:=sf;
if N = 2 then s2:=sf;
if N = 3 then s3:=sf;
if N = 4 then s4:=sf;
if N = 5 then s5:=sf;
if N = 6 then s6:=sf;
if N = 7 then s7:=sf;
if N = 8 then s8:=sf;
if N = 9 then s9:=sf;
if N = 10 then s10:=sf;
end;
 
if LowerCase(s1) = LowerCase('xxx') then ShowMessage('');
 
end;
 
 
procedure ThServer.FServerError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
ErrorCode:=0;
end;
 
 
 
procedure ThServer.ClConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
MessageBeep(0);
end;
 
 
 
 
procedure ThServer.Execute;
begin
FServer:=TServerSocket.Create(nil);
FServer.ServerType:=stNonBlocking;
FServer.Port:=4700;
 
FServer.OnClientRead:=FServerRead;
FServer.OnClientError:=FServerError;
FServer.OnClientConnect:=ClConnect;
 
FServer.Active:=True;
 
 
 
While FServer.Active = True do sleep(100);
 
end;
 
 
 
end.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:27
Выполнено за 0.02 сек.