|
|
|
socket-сервер - как пройти через accept дальше?
|
|||
|---|---|---|---|
|
#18+
Я жду сигнала в сокет-сервере - socket.accept(). Но мне нужно по идее просто проверить - есть ли данные в сокете, если есть - считать их, если нет - пойти заниматься другими делами. Т.к. я тупой чайник в сокетах, то не знаю, как это сделать в одном потоке (а желательно сделать именно в одном потоке). Как не зависать в ожидании на accept-е, а пройти дальше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 11:52:22 |
|
||
|
socket-сервер - как пройти через accept дальше?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 11:58:12 |
|
||
|
socket-сервер - как пройти через accept дальше?
|
|||
|---|---|---|---|
|
#18+
А лучше взять готовый. Например Netty. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 11:58:41 |
|
||
|
socket-сервер - как пройти через accept дальше?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczА лучше взять готовый. Например Netty. То есть в стандартной джаве таких возможностей нет? Просто сколько времени займет изучение нетти? Без него в принципе понятно что делать - если бы не зависание на accept, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 12:10:20 |
|
||
|
socket-сервер - как пройти через accept дальше?
|
|||
|---|---|---|---|
|
#18+
else12То есть в стандартной джаве таких возможностей нет? Есть. Называется NIO. else12Просто сколько времени займет изучение нетти? Гораздо меньше чем написание своего велосипеда и исправления всех косяков в нём. Нет, правда. Ваш вопрос звучит как костатация факта "Изучение существующий решений это неоправданые затраты". Или просто лень? else12Без него в принципе понятно что делать - если бы не зависание на accept, конечно. Можно выделить отдельный поток. Примеров Socket сервер в инете масса даже для блокирующих сокетов. Но их, наверное, слишком долго искать и изучать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 12:18:24 |
|
||
|
socket-сервер - как пройти через accept дальше?
|
|||
|---|---|---|---|
|
#18+
Даже в официальном туториале есть примеры с многопоточностью. http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 12:19:18 |
|
||
|
socket-сервер - как пройти через accept дальше?
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. Это для NIO1. А вот для NIO2: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Но конечно лучше взять готовое решение. Netty это уже стандарт, но объем кода зашкаливает. Если хочется самому поразбираться, то надо брать компактную библиотеку, например df4j . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 12:21:21 |
|
||
|
socket-сервер - как пройти через accept дальше?
|
|||
|---|---|---|---|
|
#18+
ну или вот до кучи. http://forum.vingrad.ru/forum/topic-354065/kw-сокет-байт.html Аффтар! - ты не привёл свой код - тебе придёться либо изучать библиотеки, либо писать на нижнем уровне как системный программист. - либо идти в Delphi )). Там код Явно разделён на системный и прикладной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 12:30:17 |
|
||
|
socket-сервер - как пройти через accept дальше?
|
|||
|---|---|---|---|
|
#18+
else12Как не зависать в ожидании на accept-е, а пройти дальше? channel.configureBlocking(false); Но в результате, когда клиент попытается подключиться, вы этого не заметите. Чтобы это заметить, нужен отдельный поток. Этот поток может обрабатывать вообще все асинхронные события, как подключения, так и готовность к обмену (ожидая на Selector.select()). А вам почему жалко выделить отдельный поток на ожидание accept'ов, получается же проще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 12:31:40 |
|
||
|
socket-сервер - как пройти через accept дальше?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczГораздо меньше чем написание своего велосипеда и исправления всех косяков в нём. Нет, правда. Ваш вопрос звучит как костатация факта "Изучение существующий решений это неоправданые затраты". Или просто лень?... Но их, наверное, слишком долго искать и изучать? Да не лень - просто дифицит времени и решение сразу нескольких задач по разным направлениям - мозги уже разъезжаются... Надо быстро въехать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 13:59:28 |
|
||
|
socket-сервер - как пройти через accept дальше?
|
|||
|---|---|---|---|
|
#18+
rfqelse12Как не зависать в ожидании на accept-е, а пройти дальше? channel.configureBlocking(false); Но в результате, когда клиент попытается подключиться, вы этого не заметите. Чтобы это заметить, нужен отдельный поток. Этот поток может обрабатывать вообще все асинхронные события, как подключения, так и готовность к обмену (ожидая на Selector.select()). А вам почему жалко выделить отдельный поток на ожидание accept'ов, получается же проще? С синхронизациями всего и вся пока не разобрался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 14:01:45 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38333865&tid=2128977]: |
0ms |
get settings: |
17ms |
get forum list: |
24ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
62ms |
get topic data: |
22ms |
get forum data: |
6ms |
get page messages: |
92ms |
get tp. blocked users: |
3ms |
| others: | 318ms |
| total: | 556ms |

| 0 / 0 |
