Передача файлов по средствам обчных сокетов...

Тема в разделе "WASM.NETWORKS", создана пользователем Shira, 13 мар 2005.

  1. Shira

    Shira New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2005
    Сообщения:
    17
    Короче, мне нужно осуществить сабж от сервака(асм) к клиенту(делфи). Может подскачете как???

    Я пробовал сделать, сервер все нормально отсылает, а вот как нормально принять не знаю, т.к. если пересылается какой-нить ехе-файл, то отображаются как первые 3-5 байтов. Принимаю по OnRead при помощи Socket.ReceiveText



    Подскажите, а то срочно надо!!!!
     
  2. Hmmr

    Hmmr New Member

    Публикаций:
    0
    Регистрация:
    21 апр 2004
    Сообщения:
    3
    Адрес:
    Russia
    А чем по-твоему текст отличается от исполняемого файла или любого массива байт? Думаю уже сам догадался, что нужно использовать другой метод...
     
  3. Shira

    Shira New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2005
    Сообщения:
    17
    2Hmmr

    А может подскажешь какой???
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Shira

    Socket.ReceiveBuf?
     
  5. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    хм а че вы паритесь ? я непойму ... просто принимайте данные и делайте (собирайте (если не поток)) из них нужные вам файлы
     
  6. drone

    drone New Member

    Публикаций:
    0
    Регистрация:
    14 июл 2004
    Сообщения:
    37
    Адрес:
    Moscow
    TermoSINteZ прав. TCP сокеты (ф-я recv в данном случае) работают не со строками, а сбуфером памяти. И все равно, что там.



    Как я понял, у тебя делфи работает со СТРОКАМИ.

    Используй API.
     
  7. Sickle

    Sickle New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2003
    Сообщения:
    181
    да зачем апи? q_q уже все сказал...
     
  8. drone

    drone New Member

    Публикаций:
    0
    Регистрация:
    14 июл 2004
    Сообщения:
    37
    Адрес:
    Moscow
    Да так. Не доверяю я этим конструкциям высокого уровня :)
     
  9. Shira

    Shira New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2005
    Сообщения:
    17
    Всем спасибо, уже сделал, кстати при помощи ReceiveBuf :)

    Теперь, надо на оборот сделать... ;) Как лучше асмом принимать??? Точнее как все организовать, расскажите на словах кто делал.
     
  10. svl

    svl New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2005
    Сообщения:
    46
    Адрес:
    Ukraine
    Пусть от (К)лиента (С)ерверу:



    (к) -запрос на передачу с информацией о размере.

    например 123=1024



    парсируем, переводим в число.



    123 - тип команды (передача бинарника)

    1024 - размер



    (С) отвечает что клиент может передавать файл, а сам читает 1024 байт, в случае чего - ошибка.
     
  11. svl

    svl New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2005
    Сообщения:
    46
    Адрес:
    Ukraine
    Если мож, выложи сорцы на асме...
     
  12. 8March

    8March New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2005
    Сообщения:
    1
    Почитай доки по ftp-протоколу.
     
  13. svl

    svl New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2005
    Сообщения:
    46
    Адрес:
    Ukraine
    зачем ФТП ????? он же работает НАД ТСП !!!!
     
  14. Shira

    Shira New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2005
    Сообщения:
    17
    2svl

    Как сделаю вышлю!!!
     
  15. svl

    svl New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2005
    Сообщения:
    46
    Адрес:
    Ukraine
    на www.delphiworld.narod.ru

    есть исходники, даже очень полезные, которые в два счета на асм переписуются. сорри за оффтоп
     
  16. Shira

    Shira New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2005
    Сообщения:
    17
    Слушайте, тут еще трабла. Посылаю размер, потом само содержание файла. А вот размер то он в виде строки, а мне надо число. slv ты вроде писал об этом, может есть код или подскажи, как делать... Нужно для сервака, а он на асме.
     
  17. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Shira

    Ты не можешь перевести из строки в число? В delphi или asm'е?
     
  18. Shira

    Shira New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2005
    Сообщения:
    17
    2q_q

    Уже сделал. Всем спасибо, кто уделил внимание.
     
  19. svl

    svl New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2005
    Сообщения:
    46
    Адрес:
    Ukraine
    Взято с A&O:



    s2i PROC uses ecx ebx esi _str:lol: WORD

    ; in - string

    ; out - eax - integer

    LOCAL _dd:lol: WORD



    xor eax,eax

    mov _dd,eax





    cld

    xor eax,eax

    mov ecx,1024

    mov edi,_str

    repne scasb

    mov eax,1023

    sub eax,ecx

    ; invoke lstrlen,edi

    mov ecx,eax



    xor ebx,ebx

    inc ebx

    dec edi

    LS0:

    dec edi

    movzx eax,byte ptr [edi]

    and al,0fh

    mul ebx

    add _dd,eax

    imul ebx,ebx,10

    loop LS0

    mov eax,_dd

    ret

    s2i endp



    use

    invoke s2i,addr prm2

    mov How2Rcv,eax
     
  20. svl

    svl New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2005
    Сообщения:
    46
    Адрес:
    Ukraine