|
|
|
NIO.2, асинхронные каналы, серверное приложение.
|
|||
|---|---|---|---|
|
#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. Так же есть простой клиент: Код: 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. На стандартном выводе сервера: startServer().new ThreadFactory().new Thread().run() startServer().new ThreadFactory().new Thread().run() startServer().new ThreadFactory().new Thread().run() startServer().new ThreadFactory().new Thread().run() startServer().new ThreadFactory().new Thread().run() startServer().new ThreadFactory().new Thread().run() startServer().new ThreadFactory().new Thread().run() startServer().new ThreadFactory().new Thread().run() /0:0:0:0:0:0:0:0:777 На стандартном выводе клиента: Connection set Send Process finished with exit code 0 Вопрос: Как его обрабатывать соединение на сервере, если ни один из представленных евентов не срабатывает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2013, 16:33:02 |
|
||
|
NIO.2, асинхронные каналы, серверное приложение.
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiver, навскидку: - ваше расширение Thread не должно переопределять run(), а если переопределяет, то должно вызывать super.run() - в complete надо использовать result, а вызывать assc.accept не нужно - чем изобретать колесо, воспользуйтесь готовой библиотекой, приводящей асинхронный обмен к божескому виду, например https://github.com/rfqu/df4j] https://github.com/rfqu/df4j ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 23:45:27 |
|
||
|
NIO.2, асинхронные каналы, серверное приложение.
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiver, еще ошибки: - public Thread newThread(Runnable r) теряет параметр r и соответственно его не исполняет. Потому у вас не вызывается Completion handler и не печатается "Completed" и "Accepted: " - чтение не запускается, буфер bb не используется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 00:32:18 |
|
||
|
NIO.2, асинхронные каналы, серверное приложение.
|
|||
|---|---|---|---|
|
#18+
rfq, Да, действительно, проблема заключалась в методе newThread(), в частности аргумент Runnable r использовался для построения нового треда. javadoc: "param r a runnable to be executed by new thread instance". rfq- ваше расширение Thread не должно переопределять run(), а если переопределяет, то должно вызывать super.run() Не понял вас. Вот цитата из javadoc: "There are two ways to create a new thread of execution. One is to declare a class to be a subclass of Thread. This subclass should override the run method of class Thread. An instance of the subclass can then be allocated and started. ". Я собственно так и сделал. rfq- в complete надо использовать result, а вызывать assc.accept не нужно result я не использовал лишь потому, что это тестовый код. А раз не работает println(), то и весь нижележащий код так же не работает. По поводу accept(). Вот пример из javadoc: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Опять же, если не вызывать этот самый listener.accept(null, this) внутри complete, хендлер работать не будет . Так было с моим кодом: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. rfq- чем изобретать колесо, воспользуйтесь готовой библиотекой, приводящей асинхронный обмен к божескому виду, например https://github.com/rfqu/df4j Код был написан в учёбных целях, для проекта планировал взять что-нибудь вроде Netty. А за ссылку спасибо. Рабочий код, на всякий случай: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 13:17:45 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2129937]: |
0ms |
get settings: |
17ms |
get forum list: |
24ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
58ms |
get topic data: |
18ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 300ms |
| total: | 509ms |

| 0 / 0 |
