1. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    Компоненты для работы с сокетами... и есть ль !компонент! позволяющий переключить протокол Tcp/udp
     
    3 people like this.
  2. DeRek-X

    DeRek-X New Member

    Joined:
    19 Aug 2005
    Messages:
    9
    Likes Received:
    2
    Reputations:
    2
    такого и нету, да и нужен ли он ?
    используй компоненты TclientSocket TServerSocket из dclsockets70.bpl (в 7 делфе)
     
  3. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    неа... только на Winsock! позволяющий переключиться между UDP/TCP протоколом... т.е. 2 в 1....
    и вот еще как в SocketUnit получить пакет на сервере (TServerSocket.Accept???! так?!)
     
  4. DeRek-X

    DeRek-X New Member

    Joined:
    19 Aug 2005
    Messages:
    9
    Likes Received:
    2
    Reputations:
    2
    в серваке типа TServerSocket есть событие OnClientRead
    по этому событию
    Code:
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    Begin
    End;
    напиши
    Code:
    s:=Socket.ReceiveText;
    в s запишется принятый от клиента текст

    я , наверное, не правильно понял, не текст, а файлик ты хочешь получить тогда так

    клиент
    должен
    Code:
    Form1.ClientSocket1.Socket.SendStream(fs_u);
    где fs_u : TFileStream
    выбранный файлик

    сервак должен
    в процедуре ServerSocket1ClientRead (см выше)
    Code:
    fs_u:=TFileStream.Create(Newdir+FileName,fmCreate);
        fs_u.Write(s[1], length(s));
    здесь есть свои особенности, например, сначала пересылать объём файлика, потом принимать данные до тех пор пока не получим весь файлик, при этом, что бы данные не обрабатывались другими.

    наоброт посылать файлик -- полностью аналогично

    пиши на мыло
    помогу
     
    #4 DeRek-X, 15 Oct 2006
    Last edited: 15 Oct 2006
  5. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    неа, не то....
    дело в том что работа с сокетами осуществляется через dll
    и должна быть возможность переключения между udp и tcp протоколом
     
  6. da_ff

    da_ff Elder - Старейшина

    Joined:
    11 Jul 2006
    Messages:
    118
    Likes Received:
    22
    Reputations:
    26
    Я правильно понял, ты хочешь менять протоколы на лету для одного и того же порта? На сколько я знаю это невозможно, отправить на tcp порт udp пакет...
    Если же нет, используй два порта и библиотеку indy там все есть.
    Хотя, если тебе не лень можешь подменить таблицу импорта для winsock.dll и перенаправлять такеты на разные порты фнутри функции. Можно создать видимость смены протоколов. Или же, другой вариант, подменить адреса векторов прерываний у сетевухи, и там уже отправлять что хочешь и куда хочешь, только я не уверен, что архитектура это позволит... Хотя будет интересно!
     
    #6 da_ff, 20 Oct 2006
    Last edited: 21 Oct 2006
  7. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,296
    Reputations:
    327
    2da_ff: ахинея. кг/ам вообщем.

    юз винапи, и не ипем мозг с компонентами, ибо кроме гимора и чужого подхода ничего не поимеем.

    SOCKET socket(
    int af,
    int type,
    int protocol
    );

    type= SOCK_STREAM (TCP)
    type= SOCK_DGRAM (UDP)

    + немного добавлю: UDP в отличие от TCP не ведет контроля соединения, а просто отправляет сообщения (дейтаграммы).
     
    #7 sn0w, 25 Oct 2006
    Last edited: 25 Oct 2006
  8. gemaglabin

    gemaglabin Green member

    Joined:
    1 Aug 2006
    Messages:
    772
    Likes Received:
    842
    Reputations:
    1,369
    Лучше не использовать такие гадости,как Indy и TClientSocket.

    Code:
    var Sock : integer;
    begin Sock := Socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    
    Code:
    var Sock : integer;
    begin  Sock := socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); 
    
     
  9. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    все...
    /me теперь думает как все это на winsock организовать
     
  10. da_ff

    da_ff Elder - Старейшина

    Joined:
    11 Jul 2006
    Messages:
    118
    Likes Received:
    22
    Reputations:
    26
    Ту сноу! Нихера ни кг\ам. Это в нетленку. Я когда наутро это дело прочитал, сперва хотел потереть, но потом решил оставить.

    Ту гемаглабину! Пользовать делфи и причетать на тяжесть конпонентов как-то странно. Я использую делфи когда нужно быстро получить результат. Если же задумываешься о размерах и быстродействии связка С+ВИН АПИ то, что доктор прописал!
     
  11. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    2da_ff зачем делать окошки с помощью апи когда можно задать все через классы? делфи только в этом плане удобен. а сокеты с окошками никак не связаны.
     
    1 person likes this.
  12. da_ff

    da_ff Elder - Старейшина

    Joined:
    11 Jul 2006
    Messages:
    118
    Likes Received:
    22
    Reputations:
    26
    Ту зако! Я имел ввиду основная прелесть делфи, на мой взгляд, заключаеться именно в наличии большого выбора компонентов. Что сильно ускоряет получение конечного результата. Однако, за это приходиться платить производительностью. Поэтому, на мой взгляд писать на делфи и отказываться от компонентов как-то странно. Опять же повторюсь, я вижу основной плюс делфи именно в компонентах. А если же требуется производитьельность, или как в данном случае скрытность (кстати в чем заключается палево я так и не понял) или производительность, делфи не самый лучший выбор. Я так думаю!
     
  13. Zadoxlik

    Zadoxlik рояль с сыром

    Joined:
    28 Feb 2005
    Messages:
    758
    Likes Received:
    216
    Reputations:
    257
    Быстрый результат - пользуйте PHP и bamcompile =))) А Делфи фуу гадость какая мерзость, фубяка, испачкалси =(
     
  14. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    2da_ff а вот скорость работы "окошечек" на делфи врядли отличается от аналогичного приложения на апи. в тоже время компоненты по работе с сокетами - сильно + функционал.
    >>производительность, делфи не самый лучший выбор
    это смотря чего. опять же окошечки. отказываться не надо - нужно выбирать то что лежит на золотой середине. сокеты - слишком извратно, я тоже писал когда-то трояна с такими компонентами :) думаю тема ебли раскрыта.
    2Zadoxlik а сам в среде билдера программит))
     
  15. Zadoxlik

    Zadoxlik рояль с сыром

    Joined:
    28 Feb 2005
    Messages:
    758
    Likes Received:
    216
    Reputations:
    257
    Клевета! Пользую WinAPI! =)

    А вообще не столько говно делфи сколько сам паскаль, в данном случае объектный. Фу
     
  16. da_ff

    da_ff Elder - Старейшина

    Joined:
    11 Jul 2006
    Messages:
    118
    Likes Received:
    22
    Reputations:
    26
    билдер изврат это даже хуже с\м!!!
    ту зако! так я ничего и не имею против делфи с компонентами! а что касается вин апи, то я могу сказать, на мой взгляд кодогенерация в делфи все же хромает, и скорость выполнения увеличивается за счет компоновки, что плохо сказывается на размере. вин апи же находится все же поближе к ядру, и это обстоятельство не может плохо сказываться на быстродействии, однако зачастую при програмировании на вин апи импортируют стотонние длл, и их подгрузка и тормозит работу при запуске, зато получаем малый размер на выходе. Я так думаю!
     
    1 person likes this.