Потеря данных в сети или Перегрузка сети

Тема в разделе "WASM.NETWORKS", создана пользователем calidus, 11 апр 2007.

  1. ShadoWich

    ShadoWich New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2007
    Сообщения:
    35
    calidus ты можешь показать нормальные куски исходников по отсылке - отправке? и пиши по человески, по меньше этих чертовых точек.
    Если у тебя как в приведенной функции MySend - то там полный бред написан.

    и я уже приводил замечание, что send() может за раз не отправить 1024 байта
     
  2. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Хм, наивно полагал, что send на синхронных сокетах блокируется пока не поставит все данные в очередь для пересылки... Чтож, спасибо, будем знать.
     
  3. GanDJuStas

    GanDJuStas New Member

    Публикаций:
    0
    Регистрация:
    11 мар 2003
    Сообщения:
    21
    Адрес:
    Russia
    А как ты в потоке данных различаешь начало и конец файла?

    Это в никсах send может быть прерван сигналом и отправть не весь буфер.
    В винде в 99% случаев send вернет меньше, чем собирался отправить если сокет на другом конце закрылся не приняв все пакеты.
     
  4. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Ничего подобного речь идет о подготовке к отправке . А так как раньше думал правильно!

    хорошо нервных просим удалится , потому что будут точки хахаха - вообщем все 1024 отправляются 100% в конце я ставил проверку и если не все то месага выскочит ...но все ок было . Второе ,сенд самый обыкновенный нет ничего просто сенд из буфера . Третее пакеты доходят полностью , НО НЕ ВСЕ ПАКЕТЫ ПРИХОДЯТ , все 1024 отсутствуют или пришли. После Сенда 10 мс пауза и далее поиск файлов FindNext . Если поставить на прием еще выход мессаги .. то все пакеты доходят удачно, значит дело в клиенте , либо в ресиве либо в добавлении в листвью . У меня используется Асинхроныый режим . Куда диваются остальный паеты ? не часть пакета ...а полностью пакет. С вопросом о различии как определяю где конец где начало ...это меня не интересует. ДЛанные удачно расфасовываются как надо по листвью ...но на букве F пакеты с названиями файлов до конца алфавита не доходят ..или доходят но их нет .

    Процедура MySend не моя ...это пример ... какого то человека с Hгруппы

    простой сед и ресив ...нет ничего особенного
     
  5. GanDJuStas

    GanDJuStas New Member

    Публикаций:
    0
    Регистрация:
    11 мар 2003
    Сообщения:
    21
    Адрес:
    Russia
    Хорош мозги делать. Давай полный код
     
  6. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Клиент
    Код (Text):
    1. ;########################################################################################
    2.  invoke SendMessage,hPROGRESS,PBM_SETSTEP,20,0
    3.  invoke SendMessage,hPROGRESS,PBM_STEPIT,0,0
    4.  
    5.  
    6. ;ждем ответа
    7. invoke recv,sock,addr COMANDAIN,1024,0;sizeof COMANDAIN,0
    8.    invoke SendMessage,hPROGRESS,PBM_STEPIT,0,0
    9.  
    10. invoke lstrlen ,addr COMANDAIN
    11. mov ecx,eax
    12. lea esi,offset [COMANDAIN]
    13. lea edi,offset [PARAM1IN]
    14. cld
    15. XY: cmp byte ptr [esi],"]"
    16. jz DALEE
    17. movs byte ptr es:[edi],ds:[esi]
    18. jmp XX
    19. DALEE:
    20. cmp byte ptr [esi+1],"["
    21. jz DALEE2
    22. movs byte ptr es:[edi],ds:[esi]
    23. XX:
    24. loop XY
    25. jmp FIRST
    26. DALEE2:
    27.          
    28. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    29. inc esi
    30. inc esi
    31. dec ecx
    32. dec ecx
    33. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    34. lea edi,offset [PARAM2IN]
    35. cld
    36. XYY: cmp byte ptr [esi],"]"
    37. jz DAALEE
    38. movs byte ptr es:[edi],ds:[esi]
    39. jmp XXX
    40. DAALEE:
    41. cmp byte ptr [esi+1],"["
    42. jz DALEE3
    43. movs byte ptr es:[edi],ds:[esi]
    44. XXX:
    45. loop XYY
    46. jmp FIRST
    47. DALEE3:
    48.              invoke SendMessage,hPROGRESS,PBM_STEPIT,0,0
    49. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    50. inc esi
    51. inc esi
    52. dec ecx
    53. dec ecx
    54. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    55. lea edi,offset [PARAM3IN]
    56. cld
    57. XYYY: cmp byte ptr [esi],"]"
    58. jz DAALEEE
    59. movs byte ptr es:[edi],ds:[esi]
    60. jmp XXXX
    61. DAALEEE:
    62. cmp byte ptr [esi+1],"["
    63. jz DALEE4
    64. movs byte ptr es:[edi],ds:[esi]
    65. XXXX:
    66. loop XYYY
    67. jmp FIRST
    68. DALEE4:
    69.  
    70. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    71. inc esi
    72. inc esi
    73. dec ecx
    74. dec ecx
    75. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    76. lea edi,offset [PARAM4IN]
    77. cld
    78. XYYYYY: cmp byte ptr [esi],"]"
    79. jz DAALEEEE
    80. movs byte ptr es:[edi],ds:[esi]
    81. jmp XXXXX
    82. DAALEEEE:
    83. cmp byte ptr [esi+1],"["
    84. jz DALEE5
    85. movs byte ptr es:[edi],ds:[esi]
    86. XXXXX:
    87. loop XYYYYY
    88. jmp FIRST
    89. DALEE5:
    90.          
    91. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    92. inc esi
    93. inc esi
    94. dec ecx
    95. dec ecx
    96. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    97. lea edi,offset [PARAM5IN]
    98. cld
    99. X5: cmp byte ptr [esi],"]"
    100. jz DAALE51
    101. movs byte ptr es:[edi],ds:[esi]
    102. jmp XXXXXY
    103. DAALE51:
    104. cmp byte ptr [esi+1],"["
    105. jz FIRST
    106. movs byte ptr es:[edi],ds:[esi]
    107. XXXXXY:
    108. loop X5
    109. ;####################################################
    110. FIRST:
    111.  
    112. call listV
    113.  
    114. .ENDIF
    115. .ENDIF
    Сервер
    Код (Text):
    1. FillFileInfo proc uses edi
    2.      LOCAL finddata:WIN32_FIND_DATA
    3.      LOCAL FHandle:DWORD
    4.      LOCAL    time:SYSTEMTIME
    5.  
    6.      invoke FindFirstFile,addr PARAM2IN,addr finddata
    7.      .if eax!=INVALID_HANDLE_VALUE
    8.        mov FHandle,eax
    9.        xor edi,edi
    10.        .while eax!=0
    11. ;##############################################
    12. PRAVKA:                                       ; Вычислим указатель на cFileName
    13.       invoke  lstrcmp,addr fake1,addr finddata.cFileName                         ; это "."?
    14.       test    eax,eax                                         ; Если да,
    15.       je      TEKUSHAA                                            ; ищем дальше
    16.  
    17.       invoke  lstrcmp,addr fake2,addr finddata.cFileName                       ; это ".."?
    18.       test    eax,eax                                         ; Если да,
    19.       je      TEKUSHAA
    20. ;#############################################
    21.  
    22.  
    23.                   INVOKE     FileTimeToLocalFileTime, addr finddata.ftLastWriteTime, addr Lft
    24.                   INVOKE     FileTimeToSystemTime, addr Lft, addr time
    25.                   INVOKE     fmtime, time.SYSTEMTIME
    26.          test finddata.dwFileAttributes,FILE_ATTRIBUTE_DIRECTORY
    27.          .if ZERO?
    28.          jmp ZEROS
    29.          .elseif
    30.          jmp ZEROS1
    31.    
    32.          .endif
    33.  
    34.    jmp KONEZ
    35.  ZEROS1:
    36.  
    37.  invoke lstrcat,addr LIST,addr MANAGER
    38. invoke lstrcat,addr LIST,addr RAZDELITEL
    39. invoke lstrcat,addr LIST,ADDR finddata.cFileName
    40. invoke lstrcat,addr LIST,ADDR bkl
    41. invoke lstrcat,addr LIST,addr RAZDELITEL
    42. invoke lstrcat,addr LIST,ADDR szDir
    43. invoke lstrcat,addr LIST,addr RAZDELITEL
    44. invoke lstrlen ,addr cdt.dmo
    45. cmp eax,0
    46. je NOLL
    47. invoke lstrcat,addr LIST,addr cdt.dmo
    48.  
    49.  
    50. jmp GESEND
    51.  ;#################################################################
    52. ZEROS:
    53.  
    54. ;###############################################
    55.  
    56. invoke lstrcat,addr LIST,addr MANAGER
    57. invoke lstrcat,addr LIST,addr RAZDELITEL
    58. invoke lstrcat,addr LIST,ADDR finddata.cFileName
    59. invoke lstrcat,addr LIST,addr RAZDELITEL
    60. ;---------- [Get the file size] ----------
    61.  
    62.             mov     eax, MAXDWORD
    63.             mov     ebx, finddata.nFileSizeHigh
    64.            imul     ebx
    65.             add     eax, finddata.nFileSizeLow
    66.             push eax
    67.             mov     edx, eax
    68.             pop eax
    69.             cmp eax,0
    70.             je NOLL
    71.             ;lea     eax, szBuff0
    72.          INVOKE     BaseAscii,edx,addr szBuff0,0,10,0,0,1
    73.  
    74. ;---------- [Load the file size] ----------
    75.  
    76. invoke lstrcat,addr LIST,ADDR szBuff0
    77. invoke lstrcat,addr LIST,addr RAZDELITEL
    78. invoke lstrlen ,addr cdt.dmo
    79. cmp eax,0
    80. je NOLL
    81. invoke lstrcat,addr LIST,addr cdt.dmo
    82. jmp GESEND
    83. NOLL:
    84. invoke lstrcat,addr LIST,ADDR NOLLIK
    85. GESEND:
    86. invoke MySend;call SENDING
    87. invoke WIPECLEAR,addr LIST;call LISTCLEAR
    88.                    
    89. TEKUSHAA:
    90.          invoke FindNextFile,FHandle,addr finddata
    91.  
    92. KONEZ:
    93.        .endw
    94.        invoke FindClose,FHandle
    95.      .endif
    96.    
    97.  invoke lstrcat,addr LIST,addr MANAGER
    98. invoke lstrcat,addr LIST,addr RAZDELITEL
    99. invoke lstrcat,addr LIST,ADDR OBEN
    100. invoke lstrcat,addr LIST,addr RAZDELITEL
    101. invoke lstrcat,addr LIST,ADDR fake2
    102. invoke lstrcat,addr LIST,addr RAZDELITEL
    103. invoke lstrcat,addr LIST,ADDR fake2
    104. invoke MySend;call SENDING
    105. invoke WIPECLEAR,addr LIST
    106.  
    107.  ret
    108.  
    109.  FillFileInfo endp
     
  7. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Код (Text):
    1. MySend PROC
    2.  
    3. invoke send, client, edi,1024, 0
    4. invoke Sleep,10
    5. ret
    6. MySend ENDP
    тут раньше чето было поэтому как процедура но нету уже давно