|
|
|
Передача файла через SocketChannel
|
|||
|---|---|---|---|
|
#18+
Наверняка кто-нибудь сталкивался с такой задачей: нужно передать файл через сокетное соединение (nio). Перерыл кучу документации, но желаемого результата не достиг: файл передается, но не всегда и не всегда целиком. Такое ощущение, что клиент, получающий данные от сервера, получает их быстрее, чем они приходят, и в определенный момент клиент думает, что данные закончились, а на самом деле просто очередная порция еще не пришла. Может быть дело и не в этом, я просто теряюсь в догадках. Вот кусок сервера: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Вот кусок клиента: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Буду признателен за любую помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 12:14 |
|
||
|
Передача файла через SocketChannel
|
|||
|---|---|---|---|
|
#18+
while (receivedBytes > 0) поменяй на while (receivedBytes != -1) может поможет Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 15:03 |
|
||
|
Передача файла через SocketChannel
|
|||
|---|---|---|---|
|
#18+
Не поможет, transferTo() возвращает неотрицательные значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 15:30 |
|
||
|
Передача файла через SocketChannel
|
|||
|---|---|---|---|
|
#18+
Returns: The number of bytes, possibly zero, that were actually transferred http://java.sun.com/j2se/1.4.2/docs/api/java/nio/channels/FileChannel.html#transferFrom(java.nio.channels.ReadableByteChannel,%20long,%20long) только я не понял как узнать что все байты переданны. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 15:52 |
|
||
|
Передача файла через SocketChannel
|
|||
|---|---|---|---|
|
#18+
Похоже, что дело в буферизации. Естественно, я могу ошибаться. Попробуйте Код: plaintext 1. 2. и на клиенте Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 15:59 |
|
||
|
Передача файла через SocketChannel
|
|||
|---|---|---|---|
|
#18+
fooПохоже, что дело в буферизации. Естественно, я могу ошибаться. Попробуйте Код: plaintext 1. 2. и на клиенте Код: plaintext 1. 2. +1 сам помню парился по поводу флаша. а в доках не было ничего. метод тыка помог ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 16:03 |
|
||
|
Передача файла через SocketChannel
|
|||
|---|---|---|---|
|
#18+
flash() конечно же нужен, но и с ним могут быть такие же проблемы и даже будут. Т.к. клиент все равно не в курсе, все данные он получил или нет. Нужно после передачи файла, отправить какую-нибудь заранее оговоренную последовательность символов и после ее приема, клиент уже точно узнает, что он получил все данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2006, 16:25 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33707336&tid=2149372]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
178ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 519ms |

| 0 / 0 |
