Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
12.02.2017, 00:22
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
Заморочился связью между прогами на одном компе - вроде сокеты самое оно. У клиентов можно динамически назначить порты, но как это сделать что-то не ищется. Наверное и у сервера это можно сделать и обращаться к нему по имени, первый раз, и получить от него номер порта. Как номер порта сервера получить - это понятно. А вот как к нему по имени обратиться? "Есть многое на свете, друг Горацио, что и не сразу в голову придет." М. Твен "Приключения Геккельбери Финна" ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 05:54
|
|||
---|---|---|---|
|
|||
Динамическое назначение портов сокетам. |
|||
#18+
YUBAвроде сокеты самое оно Не самое. Я бы использовал WCF с биндингом через named pipes. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 19:23
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
Сон Веры ПавловныНе самое. Я бы использовал WCF с биндингом через named pipes.Если вспомнить, пайпес в Виндовс пришли из старого Юникс. Юникс от них отказался в пользу сокетов. Один из протоколов сокетов Юникс чисто локальный, т.е. чисто для взаимодействия в рамках одной машины, в обход многих надстроек над сокетами для связи по сети. Если не ошибаюсь, в Линукс сокеты уже изначально даже на уровне ядра. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 19:40
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
YUBAЕсли не ошибаюсь, в Линукс сокеты уже изначально даже на уровне ядра. а где иначе? а в винде и http давно на уровне ядра YUBAЮникс от них отказался в пользу сокетов. кто отказался? всю жизнь именованые каналы в *никсах реализовывались как Unix domain sockets ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 20:11
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
Изопропилкто отказался? всю жизнь именованые каналы в *никсах реализовывались как Unix domain socketsЛадно. Но, поговаривают, что pipes в Виндах не оч. надежны. Вообще у них действительно есть определенные недостатки. В частности, по интерфейсам. Лучше подинамическим портам.) Как в NET динамически получить порт для клиента, а лучше и для сервера тоже? Ну и обращений по имени, а не по IP:Port. Посмотрел на компе - там порты и 52000 используется, и в районе 12000 тоже. Пересекаться не хочется, лучше динамически. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 20:31
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
YUBAНо, поговаривают, что pipes в Виндах не оч. надежны разработчики MSSQL видимо не в курсе )) динамический порт у сервера получить не проблема просто 0 в бинд передать передать номер клиенту - можно например в registry записать ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 20:41
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
YUBAЗаморочился связью между прогами на одном компе - вроде сокеты самое оно. Как я с этим всем намучился в свое время. Каждый к чему-то привык это ясно. Имхо, самое оно это mailslot-ы с придуманными тобой уникальными именами. Нужно общение в 2 стороны - значит в каждой проге по mailslot - и общение по независимым "каналам". Положил msg и забыл. Еще можно слать SendMessage (COPYDATA) между окнами - но в большинстве случаев неудобно, надо ждать обработки на другой стороне и не работает если NT Service <> User , от этого почти отказался. Пайпы - зло. Named Shared Memory - вроде тоже неплохо для определенных целей - как счас выяснил. Events -тоже хорошо, если просто "стукануть". И лучше сразу все эти вещи через API делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 21:59
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
Дмитрий77Имхо, самое оно это mailslot-ы с придуманными тобой уникальными именами. Нужно общение в 2 стороны - значит в каждой проге по mailslot - и общение по независимым "каналам". Положил msg и забыл. Еще можно слать SendMessage (COPYDATA) между окнами - но в большинстве случаев неудобно, надо ждать обработки на другой стороне и не работает если NT Service <> User , от этого почти отказался. Пайпы - зло. Named Shared Memory - вроде тоже неплохо для определенных целей - как счас выяснил. Events -тоже хорошо, если просто "стукануть". И лучше сразу все эти вещи через API делать. API, безусловно, самое милое дело.)) Но когда оно ANSI C, в шарп не больно то мигрируешь. Я уже танцевал с бубном - не вариант. mailslot - не знаю, не юзал. Посмотрю что за зверь, но, имхо, медленно. Посмотрел тесты, простенький AF_UNIX односокетовый сервер -клиент обеспечивают >2000 запросов/с. Если учесть, что сервер-сокеты еще могут и размножаться как тараканы, то, наверное, самое оно. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 22:09
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
YUBAAPI, безусловно, самое милое дело.)) Но когда оно ANSI C, в шарп не больно то мигрируешь. Я уже танцевал с бубном - не вариант. с чем не справился? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 22:16
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
Изопропилс чем не справился?Несколько h-файлов в с# - эт не для белого человека.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 22:48
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
YUBAНо когда оно ANSI C, в шарп не больно то мигрируешь. Во первых, не обязательно ANSI (functionA), но где это надо всегда дублируется Unicode (functionW). И если например в VB6 я исторически почти всегда использовал ANSI (functionA), то в .Net стал строго придерживаться Unicode (functionW). Во вторых, независимо от того используешь ты A или W сообщение что ты передаешь может быть в любой кодировке, да хоть бы UTF8 которая "родная" для .Net, ф-ций WriteFile и ReadFile и т.п. A/W кстати не существует, речь обычно идет о массиве байтов, а как ты это кодируешь/декодируешь твое личное дело (штатных инструментов кодирования в .Net на эту тему хватает), главное чтобы оба конца адекватно понимали в какой одной кодировке они работают. Например в случае если у меня 2 .Net приложения, я использую utf8, а если одно из приложений C/C++ то тут уж кодирую ANSI либо Unicode==UTF16 в зависимости от того скомпилировано ли си в Юникоде или ANSI. Но в только что осиленном примере с Named Shared Memory 20204881 (под спойлером готовый модуль) почему-то использовал Encoding.Unicode хотя у меня 2 .Net приложения - почему-то так захотелось, видимо из соображений что это может пригодиться для пары C/C++ <> .Net. Хотя объясню, только недавно напоролся, все ф-ции для Mailslot у меня были заточены под ANSI и utf8, а сейчас мне понадобилась пара C++(Unicode) <> .Net, и мне эти ф-ции пришлось дублировать для Unicode. YUBAНесколько h-файлов в с# - эт не для белого человека.)) Вообще-то API ф-ции в .Net как и в VB6 декларируются ручками с четким указанием системных dll, в отличии от C, где включаешь h. файлы заголовков из всяких там SDK/DDK (что кстати часто приводит к конфликтам из-за многообразия версий этих самых SDK/DDK, тасовать include/src ссылки в свойствах C++ проекта - особенно чужого и большого, оч. неблагодарное дело). И вот пока делаешь (в .Net/VB6) эту "черную" работу, выписывая ручками все эти Declare, константы и структуры, параллельно читая документацию, начинаешь эти самые API оч. хорошо понимать и становишься "белым" человеком. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 23:20
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
Дмитрий77YUBAНо когда оно ANSI C, в шарп не больно то мигрируешь. Во первых, не обязательно ANSI (functionA), но где это надо всегда дублируется Unicode (functionW). И если например в VB6 я исторически почти всегда использовал ANSI (functionA), то в .Net стал строго придерживаться Unicode (functionW). Я не имел в виду перекодировку символов. Дмитрий77И вот пока делаешь (в .Net/VB6) эту "черную" работу, выписывая ручками все эти Declare, константы и структуры, параллельно читая документацию, начинаешь эти самые API оч. хорошо понимать и становишься "белым" человеком.Мне оно просто не надо. В СРР ДЛЛ вошел, данные получил/отправил в С# и все. А в Шарпах хоть обобрабатывайся. А о конфликтах - лишних хидеров не цепляй и будет счастье.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 23:22
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
YUBAИзопропилс чем не справился?Несколько h-файлов в с# - эт не для белого человека.))на http://pinvoke.net достаточно прототипов для начал работы ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 23:24
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
YUBA, С ddk/wdk что нибудь собирал? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 23:39
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
Изопропилна http://pinvoke.net достаточно прототипов для начал работыЗа атериал спасибо, может когда пригодится. Но Здесь совсем другое. Проще кусок в ДЛЛ на СРР сделать и уйти в приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 23:43
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
ИзопропилYUBA, С ddk/wdk что нибудь собирал?Нет. Лет 7-8 к СРР вообще не подходил, без надобности было. Недавно приперло.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 23:47
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
PS Вообще, ДЛЛ я уже, можно считать, сделал - работает. Потому и тема по сокетам. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 23:48
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
Изопропилна http://pinvoke.net достаточно прототипов для начал работы Я вот лично туда посматриваю, но за чистую монету никогда не беру. Очень любят там всякие U Int32 прописывать и <DllImport в стиле C# писать, что как раз не сильно надо и Int32 обычно везде хватает. А вот с IntPtr и (U)Int32 там как раз часто путаница, а вот это как раз на x64 очень даже стреляет, и лучше себе таких мин изначально не закладывать. Поэтому предпочитаю выписывать ручками и пережевывая каждый параметр, глядя больше в MSDN (Windows) а не в pinvoke. Еще на счет IntPtr / ByRef <structure> обычно думать приходится, потому как в разных случаях по разному удобней (пятиэтажная <structure> возможно никогда и не понадобится). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.02.2017, 23:52
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
Дмитрий77, Я же сразу уточнил - прототипы ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.02.2017, 03:31
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
Сон Веры ПавловныYUBAвроде сокеты самое оно Не самое. Я бы использовал WCF с биндингом через named pipes. Согласен, WCF самая удачная "фундаментальность" в .net (две прочие - WPF и почившее WF). Но почему "named pipes"? Я бы использовал WCF/tcp/duplex(CallbackContract) - ведь проги на одном компе сегодня - это проги на разных компах завтра. Иначе эти проги должны быть слиты в одну прогу. P.S. Замечание исключительно для Сна В.П. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.02.2017, 08:17
|
|||
---|---|---|---|
Динамическое назначение портов сокетам. |
|||
#18+
YUBAКак в NET динамически получить порт для клиента, а лучше и для сервера тоже? Ну и обращений по имени, а не по IP:Port. Посмотрел на компе - там порты и 52000 используется, и в районе 12000 тоже. Пересекаться не хочется, лучше динамически. Не понял зачем тебе имена? Внутри компа достаточно 127.0.0.1 или "localhost" если очень хочется имен. Для для сервера открываешь 127.0.0.1:0, виндовс выдаст свободный порт, на него клиентом цепляться. Код: c# 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=20&tablet=1&tid=1400045]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 454ms |
0 / 0 |