|
|
|
Подскажите по передаче файлов через сокеты
|
|||
|---|---|---|---|
|
#18+
Приветствую! Есть клиент на андроиде, который делает запрос к серверу, а тот в ответ пуляет файлы. Интересует как правильнее организовать работу: а) открывать соединение, передавать все файлы, закрывать соединение б) открывать соединение, передавать один файл, закрывать соединение и так n раз (где n - кол-во файлов) Так же хотелось бы услышать советы, как правильно организовать отлов ошибок на предмет разрыва соединения, падения клиента или сервера с возможностью последующей докачки. Ну и было бы здорово, если бы уважаемое сообщество просто поругала код. Заранее благодарю! Клиент: Код: java 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. Сервер: Код: java 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 13:24 |
|
||
|
Подскажите по передаче файлов через сокеты
|
|||
|---|---|---|---|
|
#18+
используй websocket, и тебя не будут мучать пустяки.... там уже всё решено и сделано... http://java-websocket.org/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 13:41 |
|
||
|
Подскажите по передаче файлов через сокеты
|
|||
|---|---|---|---|
|
#18+
вадяиспользуй websocket, и тебя не будут мучать пустяки.... там уже всё решено и сделано... http://java-websocket.org/ Спасибо за совет. Прям таки все это сделано ? А где тогда чуть больше информации по использованию этой библиотеки найти ? На этом сайте только ссылка на github, а там только пример с чатом. Или плохо смотрел ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 07:22 |
|
||
|
Подскажите по передаче файлов через сокеты
|
|||
|---|---|---|---|
|
#18+
bobo96, вот https://learn.javascript.ru/websockets описание протокола , в той библиотеке есть пример и для андроида . в ws предусмотрено прямо таки всё из твоего описания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 07:33 |
|
||
|
Подскажите по передаче файлов через сокеты
|
|||
|---|---|---|---|
|
#18+
если заинтересует могу дать пример применения. идля передачи бинарных и текстовых данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 07:36 |
|
||
|
Подскажите по передаче файлов через сокеты
|
|||
|---|---|---|---|
|
#18+
вадяесли заинтересует могу дать пример применения. идля передачи бинарных и текстовых данных. Было бы здорово! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 08:05 |
|
||
|
Подскажите по передаче файлов через сокеты
|
|||
|---|---|---|---|
|
#18+
bobo96, мыло в профиле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 10:13 |
|
||
|
Подскажите по передаче файлов через сокеты
|
|||
|---|---|---|---|
|
#18+
bobo96Так же хотелось бы услышать советы, как правильно организовать отлов ошибок на предмет разрыва соединения, падения клиента или сервера с возможностью последующей докачки. HTTP и FTP уже давным давно изобрели. Зачем свой лисапед городить. bobo96Ну и было бы здорово, если бы уважаемое сообщество просто поругала код. Заранее благодарю! Код - обнять и плакать. Тот случай, когда берется какой-нибудь Apache Commons IOUtils и 80% кода выкидывается. Код: java 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. Сервер: Код: java 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. Помимо замечаний указаных выше, много косяков с инкапсуляцией и Single Responsibility Principle. Методы делают много всего и сразу. И копируют и перекачивают и кодируют и знают какие-то конфигурационные директории и т.п. Код получается сильно сцепленным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 10:27 |
|
||
|
Подскажите по передаче файлов через сокеты
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Спасибо! А вы можете посоветовать библиотеки для работы с сокетами, наподобие той, что посоветовал Вадя ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 11:13 |
|
||
|
Подскажите по передаче файлов через сокеты
|
|||
|---|---|---|---|
|
#18+
Апну тему. Код: java 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. Сервер "слушает" 2 порта и при подключении клиента создается для него отдельный поток, в конструктор класса которого передаются ссылка на сам сокет (serverSocket.accept()) и ссылка на объект ServerSocket, который слушает второй порт. В дальнейшем этот объект ServerSocket в своем потоке несколько раз используется для создания еще одного подключения на второй порт для непосредственно передачи файла(-ов). Вопрос в следующем: получается же, что несколько потоков при создании подключения (serverFileSocket.accept()) обращаются к одному и тому же объекту ? Нужно ли создание этого подключения засовывать в синхронизированный блок или еще какие действия выполнять ? Почему спрашиваю: сегодня обнаружил, что при передаче файлов одному из клиентов у того по всей видимости отвалился интернет и сервер выплюнул "socket write error". Через некоторое время подключился второй клиент, но завис и не смог получить доступ к сокету, который выдал socket write error, помогла только перезагрузка программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2015, 16:38 |
|
||
|
Подскажите по передаче файлов через сокеты
|
|||
|---|---|---|---|
|
#18+
bobo96сегодня обнаружил, что при передаче файлов одному из клиентов у того по всей видимости отвалился интернет я так понимаю, вы пишите сокет-сервер https://www.google.ru/search?q=socet ыукмук&ie=utf-8&oe=utf-8&gws_rd=cr&ei=zBpwVreSKIXRswGI7KLQCw#newwindow=1&q=socket server - конечно он должен обработать все события. В том числе и потеря коннекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2015, 16:53 |
|
||
|
Подскажите по передаче файлов через сокеты
|
|||
|---|---|---|---|
|
#18+
Понимаю. Вот функция, которая непосредственно занимается передачей файлов: Код: java 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. Она уже была в теме, я ее лишь немного после советов допилил. В блоке catch вроде как все позакрывал, но, видимо, этого мало. Ну или я чего-то не понимаю :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2015, 17:01 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39111751&tid=2124551]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 372ms |

| 0 / 0 |
