Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
 Аватар для Бельфегор
688 / 602 / 139
Регистрация: 08.05.2009
Сообщений: 1,098

Чат без статичного IP

04.01.2011, 14:17. Показов 4258. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Появилась идея написать чат по сети. Нужно обойти как нибудь проблему с IP адресами. То есть если у человека меняется IP адрес как его найти? Не хочу использовать сервер в котором будут создаватся account-ы юзеров! С начала подумал что можно использовать MAC адреса. То есть добавил в прогу mac друга и говоришь с ним. Но насколько я понял зная mac нельзя узнать IP адрес. А весь интернет сканить не охота
Кстати если кому интересно вот таким кодом можно узнать mac адрес.
Код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public string GetMACAddress()
        {
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc = mc.GetInstances();
            string MACAddress = String.Empty;
            foreach (ManagementObject mo in moc)
            {
                if (MACAddress == String.Empty) 
                {
                    if ((bool)mo["IPEnabled"] == true) MACAddress = mo["MacAddress"].ToString();
                }
                mo.Dispose();
            }
            mc.Dispose();
            //MACAddress = MACAddress.Replace(":", "");
            return MACAddress;
        }


Подскажите пожалуйста как организовать задуманное.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.01.2011, 14:17
Ответы с готовыми решениями:

Как создать чат без сервера
Дали задание - написать на шарпе чат без (!) централизованного сервера. Поясните, пожалуйста, что от меня хотели, как может чат быть без...

Wlan чат без сервера, не работает
Доброго времени суток всем. Вот пытаюсь писать жалкое подобие чата по локальной сети (Через вайфай) Появилась вот такая проблема при...

Чат без запросов
Все время в интернете замечаю сайты на которых чат работает без запросов, пишешь сообщение и нет запросов, как это работает? Говорят...

27
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
04.01.2011, 15:58
Ну мак-адрес можно и проще узнать:
C#
1
2
3
4
5
 System.Net.NetworkInformation.NetworkInterface[] ns=System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
            foreach (System.Net.NetworkInformation.NetworkInterface n in ns)
            {
                MessageBox.Show(n.GetPhysicalAddress().ToString());
            }
Но по мак-адресам тоже сложно идентифицировать пользователя, если один и тот же пользователь будет заходить с разных машин.

Если же все таки использовать мак-адрес, то как вариант, можно при входе в чат отправлять в сеть запрос, в котором будет содержаться мак-адрес, принимающая же машина будет сканировать входящие сообщения на наличие в них необходимых мак-адресов и, таким образом, идентифицировать пользователей.
1
 Аватар для Oxygen
55 / 44 / 5
Регистрация: 29.07.2009
Сообщений: 159
04.01.2011, 17:38
А чем же сервер не по нраву? Купите/найдите хостинг с поддержкой скриптов юзера (из бесплатных я только wallst.ru такой нашёл). Пусть клиент выходя в сеть отсылает Get/Post запрос серверу со своим IP, а затем загружает с сервера XML/txt с IP других пользователей. Я делал подобную штуку с Get запросом, кода правда под рукой нету.
0
 Аватар для Бельфегор
688 / 602 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
04.01.2011, 18:13  [ТС]
Цитата Сообщение от Oxygen Посмотреть сообщение
А чем же сервер не по нраву? Купите/найдите хостинг с поддержкой скриптов юзера (из бесплатных я только wallst.ru такой нашёл). Пусть клиент выходя в сеть отсылает Get/Post запрос серверу со своим IP, а затем загружает с сервера XML/txt с IP других пользователей. Я делал подобную штуку с Get запросом, кода правда под рукой нету.
Хочу сделать независимым от сервера!!!
0
 Аватар для Oxygen
55 / 44 / 5
Регистрация: 29.07.2009
Сообщений: 159
04.01.2011, 18:22
Тогда честно не понимаю какого чуда Вы ждёте, даже ICQ работает через сервер, а Вы собрались без сервера узнавать IP...телепатию в помощь или ещё вариант: сканить подсеть собеседника (узнать можно например здесь http://www.ip-1.ru/whois) на предмет открытого порта.
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
04.01.2011, 18:39
Учитывая, что в сообщений темы написано, что чат по сети (если имеется в виду LAN): широковещельная рассылка всегда использовалась для чата без сервера. Только ею не стоит злоупотреблять. Все же нагружает сеть.
0
 Аватар для Бельфегор
688 / 602 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
04.01.2011, 18:42  [ТС]
Цитата Сообщение от Oxygen Посмотреть сообщение
Тогда честно не понимаю какого чуда Вы ждёте, даже ICQ работает через сервер, а Вы собрались без сервера узнавать IP...телепатию в помощь или ещё вариант: сканить подсеть собеседника (узнать можно например здесь http://www.ip-1.ru/whois) на предмет открытого порта.
Есть такие проги без серверов! Например Gnutella (файлообменник, подобие Napster-a) компании Nullsoft!! Так что твоя телепатия пускай тебе помогает!!!!!!!!!!

Добавлено через 2 минуты
Цитата Сообщение от body90 Посмотреть сообщение
Учитывая, что в сообщений темы написано, что чат по сети (если имеется в виду LAN): широковещельная рассылка всегда использовалась для чата без сервера. Только ею не стоит злоупотреблять. Все же нагружает сеть.
Lan ввиду не имеется, поскольку сканирование своей подсети на предмет IP не такая уж сложная задача. имеется ввиду сеть всемирная паутина
0
 Аватар для Oxygen
55 / 44 / 5
Регистрация: 29.07.2009
Сообщений: 159
04.01.2011, 18:53
Цитата Сообщение от Бельфегор Посмотреть сообщение
Есть такие проги без серверов! Например Gnutella (файлообменник, подобие Napster-a) компании Nullsoft!! Так что твоя телепатия пускай тебе помогает!!!!!!!!!!
Уфф, сколько восклицательных знаков понатыкал =) Действительно, передача файлов в Gnutella происходит без сервера, но соединение происходит непосредственно при помощи сервера.
С википедии:
Работа сети
Только что установленный клиент получает список хабов со специального сервера , который производит мониторинг сети и учёт активных хабов (Это происходит только при пустом кеше хабов у клиента) и записывает их в кеш.
Клиент пытается установить постоянное соединение с двумя активными хабами, проходя по адресам в кеше.
Клиент запрашивает список активных хабов, соединённых с ним, и поочерёдно отправляет поисковой запрос на них.
Клиент получает ответы напрямую от клиентов, у которых есть файл или информация о нём (призрак).
Клиент соединяется с другими клиентами и получает от них информацию:
о других источниках файла
о файле (разрешение, частота кадров, длительность и т. д.)
превью файла (маленькое изображение кадра из видео либо миниатюра изображения)
мнение других о файле и его оценку
Клиент соединяется с источниками и начинает параллельную загрузку файла по протоколу HTTP с несколькими новыми хедерами.
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
04.01.2011, 19:04
Если через интернет, то в любом случае придется использовать сервер. Пользователи попросту не смогут найти друг друга. Если и перебрать все IP и смотреть какой ответ прийдет (что само уже займет уйму времени!!!), то бОльшая часть сидит за NAT-серверами до которых извне не достучаться.
1
 Аватар для Бельфегор
688 / 602 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
04.01.2011, 20:29  [ТС]
Цитата Сообщение от Oxygen Посмотреть сообщение
Уфф, сколько восклицательных знаков понатыкал =) Действительно, передача файлов в Gnutella происходит без сервера, но соединение происходит непосредственно при помощи сервера.
С википедии:
из той же википедии...

Gnutella — полностью децентрализованная файлообменная сеть в рамках Интернета, потомок Napster, отличается принципиальным отсутствием центрального сервера
А твой цитируемый текст что то не нашел!!
И вообще оставь ты эту тему! Не флуди тут! Другим помогай!

Добавлено через 1 минуту
Цитата Сообщение от body90 Посмотреть сообщение
Если через интернет, то в любом случае придется использовать сервер. Пользователи попросту не смогут найти друг друга. Если и перебрать все IP и смотреть какой ответ прийдет (что само уже займет уйму времени!!!), то бОльшая часть сидит за NAT-серверами до которых извне не достучаться.
Пойми меня правильно через серверы я отлично предтавляю как реализовать! Я ищу альтернативу.
0
 Аватар для Oxygen
55 / 44 / 5
Регистрация: 29.07.2009
Сообщений: 159
04.01.2011, 20:49
Цитата Сообщение от Бельфегор Посмотреть сообщение
А твой цитируемый текст что то не нашел!!
http://ru.wikipedia.org/wiki/Gnutella2 Пожалуйста
Оттуда же:
В общем, две сети похожи между собой, отличаясь форматами пакетов и методом поиска.
т.е. различий в принципе работы нету.

Так не хочется сводить дискуссию в банальный форумный срач...ладно, не буду спорить, поступай как знаешь, но если найдёшь чудо-технологию не забудь мне сообщить.
0
 Аватар для Бельфегор
688 / 602 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
04.01.2011, 21:14  [ТС]
Цитата Сообщение от Oxygen Посмотреть сообщение
http://ru.wikipedia.org/wiki/Gnutella2 Пожалуйста
Оттуда же:
т.е. различий в принципе работы нету.
Метод поиска это и есть ключевой момент! Первый Gnutella вообще не нужен был сервер! Но время поиска было конечно большим.
0
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
04.01.2011, 21:36
Не пойму, зачем это?

Не по теме:

Займитесь действительно важными вещами, например, как включить лампочку без лампочки или как создать самолет без крыльев.

1
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
04.01.2011, 21:45
Я сомневаюсь, что есть достаточно несложная альтернатива. Тем более совсем не знаю что делать с тем же NAT.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
05.01.2011, 02:54
Проведя параллели, это как будто хочешь ты поговорить с человеком в большой толпе, а где он незнаешь...и спросить не у кого....И всё что остается делать это либо спрашивать у каждого, не тот ли он человек что тебе нужен, либо кричать что есть мочи....может тот, кто надо и услышит...
Лично я не представляю систему нахождения одним клентом другого, без помощи сервера.
2
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
05.01.2011, 13:08
Да такой, наверное, и нет.
0
19 / 19 / 2
Регистрация: 11.12.2010
Сообщений: 56
05.01.2011, 17:56
А DynDNS? Если каждый клиент будет иметь ДНС имя то нам будет в принципе по барабану какой у него IP. Зная имя ближайшего друга подключаешься к нему. Он пишет к себе в файлик твоё имя и пересылает этот файлик тебе. ты узнаешь всех кого знает твой друг и начинаешь соединятся с ними. дальше история повторяется. В итоге получим подобие P2P и DHT в итоге нужно знать ДНС имя хотя бы одного друга ну и заставить всех друзей такие имена себе завести. Как идейка?
1
 Аватар для Бельфегор
688 / 602 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
05.01.2011, 19:45  [ТС]
идейка ничего вроде! Только нужно прочитать про это.
0
19 / 19 / 2
Регистрация: 11.12.2010
Сообщений: 56
05.01.2011, 19:53
А там читать нечего.
1. Регистрируешься на сайте.
2. Создаешь доменное имя.
3. Ставишь утилиту, которая будет сообщать серверу DynDNS твой IP.
Далее нужны только навыки программирования сетевых приложений.
З.Ы. Пункты 1-3 должен пройти каждый пользователь твоей программки для успешной реализации задуманного.
1
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
05.01.2011, 23:52
Подобие no-ip.
Опять же, как заставить их делиться своими файликами? Как навести в них порядок? Видет же такая путаница...
Вот как быть со стороны какого нибудь начинающего пользователя блондина (таких уйма): скачал он где-то установочник, запустил приложение (ладно, как-то по инструкции зарегистрировал себе имя), а дальше что? Где брать этот файлик? Как быть с разными версиями? Двое тебе прислали файлы с разными именами, ты объединил и разослал обратно уже готовый, а у них еще новые имена появились, они объединяют и тебе, а ты снова остальным? Это будет просто сплошной обмен файлами. Плюс, кто знает кто что захочет наисправлять в этом файле? П2п - файлообменная сеть, а не чат.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.01.2011, 23:52
Помогаю со студенческими работами здесь

Чат без зацикленного обновления
Здравствуйте форумчане. Чат написал, использую mysql для хранения месаджей, обновляю сообщения ajax-подгрузкой каждые 3 сек, но ведь это...

Возможно ли создать чат без порта?
Добрый вечер! Люди вы случайно не знает ли как создать чат на С + + Builder так чтобы непидключать порт потому что в банке все порты...

UDP чат без использования стандартных компонентов
Здраствуйте! Срочно нужен UDP чат но БЕЗ ИСПОЛЬЗОВАНИЯ стандартных компонентов... Кто может подсказать где можно найти, или какую нибуть...

UDP чат без использования стандартных компонентов
Здраствуйте! Срочно нужен UDP чат но БЕЗ ИСПОЛЬЗОВАНИЯ стандартных компонентов... Кто может подсказать где можно найти, или какую нибуть...

Сделать самостоятельный чат, т.е. без отдельного сервера
Ребят, смотрите. Стоит задача, сделать самостоятельный чат. Без отдельного сервера, чтобы можно было зайти в программу и сразу начать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru