Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
c#: сокет-сервер для разовых и длинных подключений
|
|||
|---|---|---|---|
|
#18+
Добрый день. В доке и примерах в основном описываются разовые подключения, т.е. клиент подключился, передал информацию и отключился. Есть длинные подключения, когда клиент подключился и шлет данные, не закрывая сокет. Схема работы: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. При длинном подключении все отрабатывает нормально. Если создавать разовые подключения, то данные могут приходить кусками. Если перед if (Available == 0) сделать задержку, то все нормально, но задержки надо избежать. Каким образом (асинхрон, проверка какого-то параметра, ...) можно в одном сервере обрабатывать данные разовых и длинных подключений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2020, 16:49 |
|
||
|
c#: сокет-сервер для разовых и длинных подключений
|
|||
|---|---|---|---|
|
#18+
Изменить первый пост не могу, поэтому пишу дополнение здесь. Пару часов назад код работал нормально с длинными подключениями, получая на выходе сообщение целиком, но потом стали приходить куски, как и в случае с разовыми подключениями. Если с разовыми можно не обнулять data и получить на выходе нужное сообщение, то длинные соединения суммируют все в data до тех пор, пока соединение не будет завершено. Как правильно считывать сообщения? В идеале нужен универсальный вариант, но пойдет хотя бы для длинных соединений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2020, 18:35 |
|
||
|
c#: сокет-сервер для разовых и длинных подключений
|
|||
|---|---|---|---|
|
#18+
Андрей Il, отправлять с каждым сообщением его размер Модератор: Тема перенесена из форума "Программирование". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2020, 20:47 |
|
||
|
c#: сокет-сервер для разовых и длинных подключений
|
|||
|---|---|---|---|
|
#18+
Андрей Il то данные могут приходить кусками это неотъемлемое свойство протокола TCP/IP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2020, 22:01 |
|
||
|
c#: сокет-сервер для разовых и длинных подключений
|
|||
|---|---|---|---|
|
#18+
В каждом соединении может быть много сообщений, поэтому можно - делать все сообщения фиксированной длины - сделать префикс с указанием длины - установить делиметер на котором сообщение заканчивается Сообщение также может приходить любыми кусками, что значит может прийдти кусок префикса, а затем все оставшееся сообщение, либо его часть либо только следующая часть префикса и так далее в любых мысленных комбинациях. Это я все к тому, что написать вменяемый сокет продакшн уровня не имея особый знаний о нем - шансов нет. Лучше скачать что-то готовое из интернета и не изобретать велосипеды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 11:41 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=39956524&tid=1398552]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 275ms |
| total: | 396ms |

| 0 / 0 |
