|
Вопрос # 6 046/ вопрос открыт / |
|
Привет эксперты, проблема в следующем: создаю thread, в нем создаю
TServerSocket, делаю процедуру procedure ThServer.FServerRead(Sender: TObject; Socket: TCustomWinSocket);
почему она не работает, то есть шлю запрос на сервер а он не приходит, хотя соединение происходит.
 |
Вопрос задал: DimonZ (статус: Посетитель)
Вопрос отправлен: 4 апреля 2012, 21:45
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 6 апреля 2012, 16:09; участников в обсуждении: 2.
|
Вадим К (статус: Академик), 5 апреля 2012, 13:59 [#1]:
сокет в блокирующем режиме?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
DimonZ (статус: Посетитель), 5 апреля 2012, 15:50 [#2]:
Нет
|
|
DimonZ (статус: Посетитель), 5 апреля 2012, 15:53 [#3]:
в execute нужно указывать на продцедуру?
То есть нужно писать такую строку -FServer.OnClientRead:=FServerRead; ?
|
|
Вадим К (статус: Академик), 6 апреля 2012, 12:59 [#4]:
последний комментарий не совсем понятен.
Может сорцы покажете?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
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.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|