|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
Приветствую! Подскажите пожалуйста, правильно ли я делаю? Задача: быстро передать данные (объект из 5 чисел типа int) из клиента на сервер через интернет. Клиент генерирует эту передачу по событию taskbar_ValueChanged, перетаскивая посзунок, т е несколько раз в секунду. Но может и ничего не передавать несколько минут. Сервер должен обработать каждую передачу и всегда быть наготове. Я накидал такой "сервер": Код: c# 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.
Это работает, на скорость в тесте не жалуется, но в реальных условиях ещё не использовал. Смущает, что Код: c# 1. 2.
делается в каждой итерации в цикле, а вынести не могу. Может есть способ лучше? Или эта задача вообще делается по-другому? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2018, 11:21 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
МышЪ, почему вынести не можешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2018, 12:54 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
vb_subМышЪ, почему вынести не можешь? рука не поднимается ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2018, 15:50 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
то есть, на сколько я понимаю, сервер принимает всё, что в него не положи. По факту, я могу создать клиент, который пропихнет на ваш сервис данных на пару терабайт, он их либо сожрет, либо сдохнет. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2018, 15:57 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
Сейчас активно выясняю, возможно всё-таки вынести можно. Были быги, потому здесь много интересного). Сейчас активно читаю доки. А вообще TcpClient подходит для этой задачи? Я по той дороге бегу? Есть сомнения, потомо что одна из задач, это независимость сервера от состояния клиента. Т е работа сервера в цикле не должна сильно зависеть от того, завис ли клиент, или клиент вообще выключен. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2018, 11:55 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
Roman Mejtesто есть, на сколько я понимаю, сервер принимает всё, что в него не положи. По факту, я могу создать клиент, который пропихнет на ваш сервис данных на пару терабайт, он их либо сожрет, либо сдохнет. Это временно, я ещё не определился со структурой передаваемых данных. Кстати, возможно это будет именно структура, не объект. Это тоже не очевидно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2018, 11:58 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
>> TcpClient client = server.AcceptTcpClient(); Так уже не комильфо Либо по старинке, через BeginAcceptTcpClient , либо через современные технологии и AcceptTcpClientAsync (неплохой пример ) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2018, 12:41 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
Интересный пример. Только вот даже в нём в итогах автор пишет: авторВ ситуациях, где клиент и сервер находятся в разных сетях, на первый план выходит вопрос безопасности, и в этом случае я всегда использую WCF. Вот я и думаю, а может не TCPClient, а WCF? Решающее значение -скорость выполнения (UDP не предлагать). Туда ли я иду? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2018, 20:26 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
Дополню. Идеальная архитектура: 1- сервер создал подключение 2- клиент подключился- сервер аутентифицирует и авторизует клиента 3- клиент передаёт непрерывно- сервер обрабатывает непрерывно 4- клиент отрубился- серверу пофигу, он даже соединение не закрыл 5- клиент вернулся- сервер аутентифицирует и авторизует клиента, далее пункт 3 Также серверное приложение должно иметь UI, при чём модуль обработки запросов клиентов и серверный модуль UI общались между собой максимально быстро, без посредников (БД, файлы). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2018, 20:46 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
http://zeromq.org/ http://www.sql.ru/forum/1117037-1/zeromq-sokety-na-steroidah-chast-3-a-dlya-chego ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2018, 20:56 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
МышЪДополню. Идеальная архитектура: 1- сервер создал подключение 2- клиент подключился- сервер аутентифицирует и авторизует клиента 3- клиент передаёт непрерывно- сервер обрабатывает непрерывно 4- клиент отрубился- серверу пофигу, он даже соединение не закрыл 5- клиент вернулся- сервер аутентифицирует и авторизует клиента, далее пункт 3 Также серверное приложение должно иметь UI, при чём модуль обработки запросов клиентов и серверный модуль UI общались между собой максимально быстро, без посредников (БД, файлы). Какие странные у вас идеалы 1. КЛИЕНТ создает подключение. А не сервер 4. Клиент отрубился, сервер ОТСЛЕДИЛ и ЗАКРЫЛ соединение, чтобы высвободить ресурсы. 5. Клиент вернулся, см. п.1 Серверное приложение НЕ ДОЛЖНО иметь UI. Это отдельная штука. Админка - это другой продукт. Максимально быстро, но не UDP - это TCP (если на одной и той же машине, то shared memory или named pipes). И тут как раз WCF - это дополнительный тормоз. Вообще WCF-ный nettcpbinging имеет смысл использовать, если и клиент и сервер будут точно на .net ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2018, 00:19 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
Нейгла отключить для максимально быстрой доставки правда если клиент мышью инициирует передачу аж до "нескольких раз в секунду" - спешить некуда ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2018, 02:03 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
Arm79, авторМаксимально быстро, но не UDP - это TCP (если на одной и той же машине, то shared memory или named pipes). И тут как раз WCF - это дополнительный тормоз. Да, этого я и ждал. Спасибо). авторНейгла отключить для максимально быстрой доставки чего-чего отключить? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2018, 15:07 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2018, 17:19 |
|
Быстрая передача данных через Интернет
|
|||
---|---|---|---|
#18+
Всем большое спасибо! Вроде разобрался. Про Нейгла, кстати события при движении мышью, это оказалось около 33мс, да пригодилось). Я то вообще то думал, что поток байт он неприрывный, т е клиент с одной стороны пишет, а сервер с другой ОДНОВРЕМЕННО читает этот же поток, вот и не работало). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2018, 21:40 |
|
|
start [/forum/topic.php?fid=20&fpage=25&tid=1399135]: |
0ms |
get settings: |
11ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
others: | 290ms |
total: | 446ms |
0 / 0 |