Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Не работает, хоть убейся... ((( 
:(
    Опции темы
W1zArD
  Дата 18.3.2007, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 29.1.2006

Репутация: нет
Всего: 3



извиняюсь заранее за "тупой" код...
прошу профиксить:
*при событии OnClientRead создается ClientSocket который должен отправить полученные данные на указанный порт...
коннектится, но не отправляет... (ставил хук на winsock, показало что: коннект происходит, но потом сразу же закрытие)

Код

program PortMapper;

uses
  Windows, SysUtils, untThreads in 'untThreads.pas';

var
_f : TextFile;
_s : string;
p1,p2 : Word;
msg : TMsg;

function LookForPorts(_s:string):Boolean;
begin
Result:=False;
p1:=StrToInt(Copy(_s, 0, Pos(':',_s)-1));
p2:=StrToInt(Copy(_s,Pos(':',_s)+1,Length(_s)));
if (((p1 > 0) and (p1 < 65535)) and ((p2 > 0) and (p2 < 65535))) then Result:=True;
end;

begin
if not FileExists('list.txt') then Exit;
AssignFile(_f,'list.txt');
Reset(_f);
while not Eof(_f) do
begin
  Readln(_f, _s);
  if LookForPorts(_s) then TRedirect.Create(p1, p2);
end;
while GetMessage(msg, 0, 0, 0) do
begin
  DispatchMessage(msg);
  TranslateMessage(msg)
end;
end.

модуль с классом
Код

unit untThreads;

interface

uses
  Classes, SysUtils, ScktComp, Windows, WinSock;

type
  TRedirect = class(TThread)
  public
    constructor Create(_from,_to:Word);
  private
    procedure _OnClientRead(Sender:TObject; Socket:TCustomWinSocket);
    procedure _OnClientError(Sender: TObject; Socket: TCustomWinSocket;
    ErrorEvent: TErrorEvent; var ErrorCode: Integer);
  protected
    procedure Execute; override;
  end;

implementation

var
c : TClientSocket;
s : TServerSocket;

procedure TRedirect._OnClientRead(Sender: TObject; Socket: TCustomWinSocket);
{var
s : TSocket;
a : TSockAddr;
q : string;
begin
q:=Socket.ReceiveText;
s:=WinSock.socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
a.sin_family:=AF_INET;
a.sin_port:=htons(2007);
a.sin_addr.S_addr:=inet_Addr('127.0.0.1');
connect(s, a, SizeOf(a));
send(s, Pointer(q), Length(q), 0);}
begin
c.Open;
if c.Socket.Connected then c.Socket.SendText(Socket.ReceiveText);
c.Close;
end;

procedure TRedirect._OnClientError(Sender: TObject; Socket: TCustomWinSocket;
    ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode:=0;
end;

constructor TRedirect.Create(_from,_to:Word);
begin
inherited Create(False);
s:=TServerSocket.Create(nil);
with s do
begin
  Port:=_from;
  ServerType:=stNonBlocking;
  OnClientRead:=_OnClientRead;
  OnClientError:=_OnClientError;
  Open;
end;
c:=TClientSocket.Create(nil);
with c do
begin
  Address:='127.0.0.1';
  ClientType:=ctNonBlocking;
  Port:=_to;
//  Open;
end;
end;

procedure TRedirect.Execute;
begin
//
end;

end.


Это сообщение отредактировал(а) W1zArD - 18.3.2007, 09:52
PM   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0411 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.