|
Как передать Stream через WCF? (или куда девается последний байт)
|
|||
---|---|---|---|
#18+
Как передать поток через WCF? Я делаю так: 1. создаю MessageContract: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Код: plaintext 1. 2. 3. 4. 5. 6. 7.
3. на клиенте делаю так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2007, 19:49 |
|
Как передать Stream через WCF? (или куда девается последний байт)
|
|||
---|---|---|---|
#18+
Прочитал 4-ый байт но только со второй попытки. С чем это может быть связано? Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2007, 20:13 |
|
Как передать Stream через WCF? (или куда девается последний байт)
|
|||
---|---|---|---|
#18+
Sergey AndriyasyanПрочитал 4-ый байт но только со второй попытки. С чем это может быть связано? Код: plaintext 1. 2. 3. 4. 5. 6.
возможно фрагментирование пакета сделайте буфер с циклическим ожиданием всей длины пакета (догрузка) - у вас ета проблема отпадет ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2007, 09:04 |
|
Как передать Stream через WCF? (или куда девается последний байт)
|
|||
---|---|---|---|
#18+
Что значит циклическое ожидание? и означат ли это что проблема отпадет? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2007, 13:09 |
|
Как передать Stream через WCF? (или куда девается последний байт)
|
|||
---|---|---|---|
#18+
Сергей, а зачем так сложно? Если Вам нужно передать только поток, то можно обойтись просто методом с одним параметром Stream. Если же очень нужно передавать доп. информацию в пакете, то можно просто обойтись полями класса (зачем для передачи городить свойства)? Что же касается Вашей, проблемы, то я подозреваю, что дело в том, что вы пытаетсь с последовательным потоком работать как с потоком прямого доступа (используя Seek). Копировать лучше последовательно. Примерно так (при условии, что поток не пуст, конечно): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2007, 08:36 |
|
Как передать Stream через WCF? (или куда девается последний байт)
|
|||
---|---|---|---|
#18+
вообще на будующее есть алгоритмы которые используются в сокетах для передачи данных чтото вроде блок 1-4 байта содержат код/тип пакета который может регламентировать длину пакета (не нужно вам) или блок 4 байта содержит длину пакета данных (вам нужно) далее идет блок данных с длиной пакета от вас требуется только получить определенное количество байт (ожидать их прихода) и постепенно коллекционировать их в свой буффер (порследовательно, потому что сокеты могут содержать произвольные длинны пакетов, но очередность зависит от протокола (UTP - может прийти пакеты 1,2,4,3,... а TCP - строго очередно 1,2,3,4,... ) ) ... а дальше передавать их на обработку... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2007, 10:03 |
|
Как передать Stream через WCF? (или куда девается последний байт)
|
|||
---|---|---|---|
#18+
>Sergey Andriyasyan >Как передать поток через WCF? Если я правильно Вас понял, то может быть так ... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2007, 11:22 |
|
|
start [/forum/topic.php?fid=19&fpage=35&tid=1398021]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 249ms |
total: | 357ms |
0 / 0 |