Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / P2P по UDP / 25 сообщений из 27, страница 1 из 2
31.10.2014, 21:09
    #38793400
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Хочу похвастаться поделиться результатами. Мозг взорван асинхронностью и ненадежностью UDP, но работает :)

Полгода назад поднимал темы по данному вопросу, самплесы выкладывал, потом пришлось заморозить разработку, сейчас продолжил. вобщем имею альфа-версию почти готовую к испытанию на живых юзерах.

Цель не совсем P2P, а прямое взаимодействие юзеров, после узнавания о друг-друге.
Так в тестах работает:
Каждый юзер слушает какой-то UDP-порт на всех своих интерфейсах. Порт известен, интерфесы тоже, но порт по выбору ОС. Т.е. чистый клиент легко вылазиющий из-за брэндмауэра виндовса. Плюс есть НАТ который может дать другой порт и IP за НАТом неизвестен.
Юзер1 передает через сервер Юзеру2 желание пообщаться. При передаче Юзер1 сообщает свои реальные локальные IP:порт, плюс сервер добавляет IP:порт ната. В обратную сторону Юзер2 сообщает свои локальные IP:порт и сервер добавляет внешние.

Дальше вроде все понятно, но нельзя тупо слать c Юзера1 на IP:порт НАТа Юзера2, не доходит. Надо пробить НАТы.

Для этого оба юзера (зная о друг-друге) начинают трижды пинговать (посылать соответственно оформленные UDP пакеты) с интервоалом 100 мс на все известные адреса другого юзера. Если оба юзера в одной локалке - общаются по локалке, если оба за НАТами - НАТы вырабатывают правила для приема ответов. Главное чтобы оба юзера пинговали одновременно.

Вопрос: в итого юзеры в локалке, однажды соединившись через сервер, начинают обмениваться сообщениями по локалке. Замечательно если у обоих юзеров есть инет. Но без инета они друг-друга никогда не найдут. Пока мысль выкладывать каждым юзером свои списки IP:порт в виде файла в общую расшаренную папку (известную обоим), но тут проблема где будет эта папка, все юзеры равноправны и расшарить папку на одном, значит сделать его главным, что не везде возможно. В идеале все юзеры должны быть равноправны. Может кто-что подскажет как это решить в виндовсе?
...
Рейтинг: 0 / 0
31.10.2014, 21:41
    #38793412
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Dima T Вопрос: в итого юзеры в локалке, однажды соединившись через сервер, начинают обмениваться сообщениями по локалке. Замечательно если у обоих юзеров есть инет. Но без инета они друг-друга никогда не найдут. Пока мысль выкладывать каждым юзером свои списки IP:порт в виде файла в общую расшаренную папку (известную обоим), но тут проблема где будет эта папка, все юзеры равноправны и расшарить папку на одном, значит сделать его главным, что не везде возможно. В идеале все юзеры должны быть равноправны. Может кто-что подскажет как это решить в виндовсе?Шарахните широковещательным пакетом.

Дарю мысль - поскольку в одной локалке некоторые пользователи могут иметь выход в интернет, а другие нет, то первых можно сделать ретрансляторами. Типа как раньше было в скайпе.
...
Рейтинг: 0 / 0
31.10.2014, 22:11
    #38793427
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Dima T,

STUN протокол ещё посмотри
...
Рейтинг: 0 / 0
31.10.2014, 22:19
    #38793432
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
ИзопропилDima T,

STUN протокол ещё посмотриТак он его уже реализовал, насколько я понял.
...
Рейтинг: 0 / 0
31.10.2014, 22:20
    #38793433
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Dima T Вопрос: в итого юзеры в локалке, однажды соединившись через сервер, начинают обмениваться сообщениями по локалке. Замечательно если у обоих юзеров есть инет. Но без инета они друг-друга никогда не найдут. Пока мысль выкладывать каждым юзером свои списки IP:порт в виде файла в общую расшаренную папку (известную обоим), но тут проблема где будет эта папка, все юзеры равноправны и расшарить папку на одном, значит сделать его главным, что не везде возможно. В идеале все юзеры должны быть равноправны. Может кто-что подскажет как это решить в виндовсе?

все что ты описал - есть в libtorrent уже.

в т.ч. обмен UDP трафиком сидя за NAT, без участия сервера.
http://en.wikipedia.org/wiki/Micro_Transport_Protocol

называется NAT traversal using UDP hole punching


torrent - это ведь не про обмен файлами, это про обмен данными в целом
...
Рейтинг: 0 / 0
31.10.2014, 22:22
    #38793436
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
miksoftИзопропилDima T,

STUN протокол ещё посмотриТак он его уже реализовал, насколько я понял.
не видел упоминания о публичных STUN серверах
...
Рейтинг: 0 / 0
31.10.2014, 22:26
    #38793437
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Изопропилmiksoftпропущено...
Так он его уже реализовал, насколько я понял.
не видел упоминания о публичных STUN серверахDima TЮзер1 передает через сервер Юзеру2 желание пообщаться. При передаче Юзер1 сообщает свои реальные локальные IP:порт, плюс сервер добавляет IP:порт ната. В обратную сторону Юзер2 сообщает свои локальные IP:порт и сервер добавляет внешние.
...
Рейтинг: 0 / 0
31.10.2014, 22:40
    #38793444
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
miksoft,

то что идея повторена - я вижу
...
Рейтинг: 0 / 0
31.10.2014, 22:45
    #38793447
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Изопропилне видел упоминания о публичных STUN серверахКстати, да, согласен. Задействовать публичные сервера было бы полезно, если предполагается серьезная нагрузка. А для этого придется реализовать STUN по стандарту, а не только по идее :)
...
Рейтинг: 0 / 0
31.10.2014, 23:11
    #38793455
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
miksoftШарахните широковещательным пакетом.
Склоняюсь к этому. Написал в надежде что есть фича которую я не знаю. Не трояны пишу если что.

miksoftДарю мысль - поскольку в одной локалке некоторые пользователи могут иметь выход в интернет, а другие нет, то первых можно сделать ретрансляторами. Типа как раньше было в скайпе.
как раз проблема в том что некоторые юзеры отрезаны от инета, банально задан явно локальный IP и шлюз не прописан.

PS Всем: не советуйте torent, изучал, это не то, во-первых они на инет нацелены, во-вторых нацелены на параллельное скачивание больших данных (например фильм) с кучи источков. У меня другая задача, утрировано это аська с доставкой сообщения размером до нескольких Мб.
...
Рейтинг: 0 / 0
31.10.2014, 23:23
    #38793458
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
miksoftЗадействовать публичные сервера было бы полезно
Добавлю, мои сервера публичные для моей проги, их несколько в инете, проблема в локалке где у некоторых пользователей инета нет.
Сейчас это сетевая версия, где в расшаренной папке лежит всё (EXE и база), хочу уйти от этого, хочу извне задавать какие рабочие места надо объединять независимо от их расположения и доступа в инет. Вопросы репликации баз решаемы.
...
Рейтинг: 0 / 0
31.10.2014, 23:24
    #38793459
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Модератор: Следующий "зайчик" будет баном.
...
Рейтинг: 0 / 0
31.10.2014, 23:36
    #38793465
nolocky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
впрочем, какой-то один клиент должен работать типо как STUN сервер или быть доступен явно, иначе UDP hole не пробить, ибо какой порт будет выделен натом - неведомо. а клиент за натом его не обнаружит просто так.

тут можно еще присоветовать мультикаст, множество современных раутеров внезапно его поддерживают в рамках IPTV поддержки, и пропускают IGMP трафик подписки через NAT, как минимум внутрь частной сетки за NAT cможет пробиться мультикаст, отправленный извне, если клиент изнутри сделает запрос на присоединение к известной группе.

обмениваться напрямую они скорее всего по мультикасту не смогут, но как минимум пробить UDP дырку смогут в итоге - клиент за натом узнает по мультикасту, на какой UDP порт и адрес слать запрос тому, кто мультикаст трафик шлет ему извне.


впрочем, тыж неосилятор.... что такое мультикаст читать - нафиг надо, верно?
...
Рейтинг: 0 / 0
01.11.2014, 11:08
    #38793569
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
ИзопропилDima T,

STUN протокол ещё посмотри
посмотрел, мой сервер в принципе это и делает, протокол только самодельный.

miksoftДарю мысль - поскольку в одной локалке некоторые пользователи могут иметь выход в интернет, а другие нет, то первых можно сделать ретрансляторами.
Спасибо, не заценил вчера подарок :) Подумаю в эту сторону. На текущий момент безинетным юзерам в инет не надо, только наладить связь в локалке с другими запущенными копиями проги, но возможность не помешает, вдруг завтра понадобится.
...
Рейтинг: 0 / 0
01.11.2014, 11:16
    #38793575
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Похоже нашел решение для виндовса: mailslot может слать широковещательно
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365147(v=vs.85).aspx \\*\mailslot\name Retrieves a client handle to all mailslots with the specified name in the system's primary domain.
Широковещательно слать на свой порт не очень хорошо, т.к. придется всем клиентам висеть на конкретном порту, брандмауэр будет у пользователя разрешение спрашивать, тот может запретить и прога вообще сети не увидит.

Буду mailslot тестить.
...
Рейтинг: 0 / 0
01.11.2014, 15:20
    #38793731
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Типа, mailslot к (конкретному) порту не привязан ...
...
Рейтинг: 0 / 0
01.11.2014, 15:34
    #38793747
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Dima TШироковещательно слать на свой порт не очень хорошо, т.к. придется всем клиентам висеть на конкретном порту, брандмауэр будет у пользователя разрешение спрашивать, тот может запретить и прога вообще сети не увидит.Так у вас же это уже реализовано:
Dima TКаждый юзер слушает какой-то UDP-порт на всех своих интерфейсах.
А для отправки широковещательных UDP, насколько я помню, никаких специфических разрешений не надо. По крайней мере, я в это не упирался.
...
Рейтинг: 0 / 0
01.11.2014, 20:38
    #38793908
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Basil A. SidorovТипа, mailslot к (конкретному) порту не привязан ...
Наоборот, типа привязан и разрешен брандмауэром. По большому счету пофиг как оно работает, т.к. микрософтом все уже реализовано и разрешено. Надеюсь.
miksoftDima TШироковещательно слать на свой порт не очень хорошо, т.к. придется всем клиентам висеть на конкретном порту, брандмауэр будет у пользователя разрешение спрашивать, тот может запретить и прога вообще сети не увидит.Так у вас же это уже реализовано:
Dima TКаждый юзер слушает какой-то UDP-порт на всех своих интерфейсах.
А для отправки широковещательных UDP, насколько я помню, никаких специфических разрешений не надо. По крайней мере, я в это не упирался.
Как я понял нельзя широковещательно слать на все порты (я же не знаю порт другого юзера), широковещательность распространяется только на IP адреса, т.е. для широковещательной рассылки надо конкретный порт указать, типа "192.168.0.255:1234", а варианта "192.168.0.255:*" - нет.

PS Не надо ко мне на "вы" обращаться, неприятно. Вроде как принято на "ты"
...
Рейтинг: 0 / 0
01.11.2014, 22:21
    #38793975
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Dima TКак я понял нельзя широковещательно слать на все порты (я же не знаю порт другого юзера), широковещательность распространяется только на IP адреса, т.е. для широковещательной рассылки надо конкретный порт указать, типа "192.168.0.255:1234", а варианта "192.168.0.255:*" - нет.А зачем на все порты? Почему не использовать все время один и тот же порт?

Кроме того, можно для сигнальных целей использовать широковещание на более низком уровне. Там вообще такого понятия, как порты, нету. Тогда заодно удастся попасть на те хосты, которые имеют адрес из другой ip-посдети в этом же широковещательном домене сети. Правда, боюсь, чтобы "услышать" такой фрейм, придется интерфейс в promiscuous mode переводить. Но сюда я на практике не совался, могу наврать.


Dima TPS Не надо ко мне на "вы" обращаться, неприятно. Вроде как принято на "ты"Прошу прощения, у меня с этим вечно раздрай...
...
Рейтинг: 0 / 0
02.11.2014, 03:22
    #38794111
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Dima TНаоборот, типа привязан и разрешен брандмауэромЭто вы напрасно думаете ...
Mailslot - часть SMB и работает оно тогда, когда есть доступ к ресурсам "сети MS".
Степень опасности и уровень рекомендованности сами оцените или разжёвывать?
...
Рейтинг: 0 / 0
02.11.2014, 14:47
    #38794248
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
miksoftА зачем на все порты? Почему не использовать все время один и тот же порт?
Потому что если написать так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
	SOCKET sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
	sockaddr_in addr_in;
	addr_in.sin_family = AF_INET;
	addr_in.sin_port = htons(12345); // Слушаем порт 12345
	addr_in.sin_addr.s_addr = htonl(INADDR_ANY);
	if(bind(sock, (SOCKADDR *) &addr_in, (socklen_t) sizeof(sockaddr_in)) != 0) {
		printf("bind() error");
	}


виндовс вопрос задает "брандмауэр виндовса заблокировал некоторые возможности этой программы." И если есть админские права, то есть кнопка "Разрешить". Если права пользовательские, то только кнопка "Ок" и предложение позвать админа чтоб разрешил.

Но если писать так
Код: sql
1.
	addr_in.sin_port = htons(0); // Слушаем какой-то порт на выбор виндовса


то никаких вопросов виндовс не задает и открывает порт даже с правами пользователя.

По первому варианту в некоторых случаях (где работают с пользовательскими правами) надо будет админа звать, просить открыть, админы не у всех юзеров в шаговой доступности, вобщем только лишний гимор себе создам.


miksoftКроме того, можно для сигнальных целей использовать широковещание на более низком уровне. Там вообще такого понятия, как порты, нету. Тогда заодно удастся попасть на те хосты, которые имеют адрес из другой ip-посдети в этом же широковещательном домене сети. Правда, боюсь, чтобы "услышать" такой фрейм, придется интерфейс в promiscuous mode переводить. Но сюда я на практике не совался, могу наврать.
Можно, только у меня тоже этой практики ноль, да и стеорией не очень. Как понимаю это raw-сокеты надо использовать, немного читал про них, пришел к выводу что не готов я такие поделки делать.
...
Рейтинг: 0 / 0
02.11.2014, 15:02
    #38794252
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Basil A. SidorovMailslot - часть SMB и работает оно тогда, когда есть доступ к ресурсам "сети MS".
Степень опасности и уровень рекомендованности сами оцените или разжёвывать?
Разжевывать.
Как я понимаю никой угрозы безопасности не должны создать мои маилслоты. Я же их в инет не собираюсь высовывать. Только внутри локалки. Никакие настройки самой локалки я тоже трогать не собираюсь, нет у меня ни желания, ни возможности затачивать чужую сетку под мою прогу. Мне надо чтобы работало в виндовой локалке настроенной по умолчанию.

Написал тест: каждый комп рассылает свое имя на все маилслоты с заданным именем.
Запустил на 3-х компах каждый видит сообщения остальных.
исходник
Код: plaintext
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.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
#include <windows.h>
#include <stdio.h>
#include <process.h>

#define MAX_MSG_SIZE 424 // максимальный размер сообщения
HANDLE slot_read = NULL;

//*****************************************************************************************
// Поток приема сообщений из слота
unsigned __stdcall mailslot_recv(void* slot_name)
{
	// Открытие слота для приема
	char name[256];
	sprintf_s(name, 256, "\\\\.\\mailslot\\%s", slot_name);
	slot_read = CreateMailslot(name, MAX_MSG_SIZE, 1000, (LPSECURITY_ATTRIBUTES) NULL);
	bool work = true;
    if(slot_read == INVALID_HANDLE_VALUE) 
    { 
        printf("CreateMailslot failed with %d\n", GetLastError());
        work = false; 
    } 

	// Ожидание сообщений
	while(work) {
		char buf[MAX_MSG_SIZE + 1];
		DWORD read = 0;
		if(!ReadFile(slot_read, buf, MAX_MSG_SIZE, &read, NULL)) {
			switch(GetLastError()) {
				case 121:
					// Истекло время ожидания сообщения заданное в CreateMailslot()
					printf("*"); 
					read = 0;
					break;
				default:
					printf("ReadFile failed with %d.\n", GetLastError());
					work = false;
					break;
			}
		} else {
			buf[read] = 0;
			printf("%5d: recv %s\n", GetTickCount() % 100000, buf);
		}
	}
    _endthreadex(0);
    return 0;
}

//---------------------------------------------------------------------------------
// Отправка сообщения в слот всем слушающим в сети
bool mailslot_send(char* slot_name, char* msg, int size)
{
	if(size > MAX_MSG_SIZE) {
		printf("Message too long\n");
		return false;
	}
	// Открытие слота на отправку
	char name[256];
	sprintf_s(name, 256, "\\\\*\\mailslot\\%s", slot_name);
	HANDLE slot = CreateFile(name, GENERIC_WRITE, FILE_SHARE_READ, (LPSECURITY_ATTRIBUTES) NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL); 
	if(slot == INVALID_HANDLE_VALUE) {
		printf("CreateFile failed with %d.\n", GetLastError()); 
		return false;
	}
	// Отправка сообщения
	DWORD written = 0;
	if(!WriteFile(slot, msg, size, &written, NULL)) {
		printf("WriteFile failed with %d.\n", GetLastError()); 
		CloseHandle(slot);
		return false;
	}
	CloseHandle(slot);
	return true;
}

int main(int argc, char* argv[])
{
	char* slot_name = "compnames";
	HANDLE th = (HANDLE)_beginthreadex(NULL, 0, &mailslot_recv, slot_name, 0, NULL);
	// Получение имени компа
	char compname[100];
	size_t comp_size = 100;
	getenv_s( &comp_size, compname, comp_size, "COMPUTERNAME");
	if(comp_size <= 0) {
		strcpy(compname, "X3");
	} 
	// Рассылка своего имени всем
	for(int i = 0; i < 100; i++) {
		Sleep(500);
		char buf[1000];
		sprintf_s(buf, 1000, "%s %d", compname, i);
		mailslot_send(slot_name, buf, strlen(buf));
	}
	// Остановка приема
	CloseHandle(slot_read);
	WaitForSingleObject(th, INFINITE);
	CloseHandle(th);
	system("pause");
	return 0;
}


Получилось то что мне надо. И довольно просто.
...
Рейтинг: 0 / 0
09.03.2015, 17:58
    #38898960
ART-CODE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Basil A. Sidorovкогда есть доступ к ресурсам "сети MS".
Dima T никой угрозы безопасности не должны создать мои маилслоты
Видимо тот самый случай, когда Basil A. Sidorovили разжёвывать?
Проблема именно в сети Майкрософт.
Везде, где мне нужна безопасность я первым делом удаляю эту сеть.
На всех, подконтрольных мне серверах и на всех моих компах ее нет.
...
Рейтинг: 0 / 0
09.03.2015, 18:28
    #38898988
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
ART-CODEBasil A. Sidorovкогда есть доступ к ресурсам "сети MS".
Dima T никой угрозы безопасности не должны создать мои маилслоты
Видимо тот самый случай, когда Basil A. Sidorovили разжёвывать?
Проблема именно в сети Майкрософт.
Везде, где мне нужна безопасность я первым делом удаляю эту сеть.
На всех, подконтрольных мне серверах и на всех моих компах ее нет.
Я вкурсе про дырявость сети MS, только вопрос стоял не так. Вопрос был какую угрозу безопасности создает использование маилслотов? Что мне делать когда не будет сети МС я как-нибудь сам порешаю.
...
Рейтинг: 0 / 0
10.03.2015, 14:26
    #38899947
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P2P по UDP
Искателям дыр расписываю подробно, чтобы топик не перечитывать.

Моя цель: сделать прогу, которая будет работать в чужой сети при любом раскладе, при этом с минимальными затратами на администрирование, т.к. за администрирование мне никто не заплатит. Платят только за работающую прогу.

Система взаимодействия целиком:
Комп А открывает случайный UDP-порт X, комп B порт Y. Номера X и Y на выбор ОС чтобы виндавс не задавал лишних вопросов, подробности выше 16789917 . Оба сидят за брэндмауэрами виндовса, который не пропустит пакет на A:X с адреса B:Y до тех пор пока A:X не пошлет B:Y. И наоборот. Т.е. чтобы начать получать пакеты друг-друга оба компа должны послать одновременно, точнее с разницей не более минуты, если больше - брандмауэр перестает пропускать.
Для этого каждый открывает и слушает маилслот, например "\\.\mailslot\ReаdySendUDP". Если прога на компе A желает связаться с другой, то делает широковещательную рассылку c указанием своего имени и порта (A:X) на "\\*\mailslot\ReаdySendUDP", прога на компе B получив A:X начинает слать тестовые пакеты на этот адрес и широковещательно рассылает свой адрес (B:Y) на "\\*\mailslot\ReаdySendUDP", комп А получив адрес B:Y начинает на него слать и они соединяются.

ХЗ в чем тут могут быть дыры. Разве что вышеупомянутые дыры реализации "сети МС", но я ее настройки не трогаю, никак не админю, т.е. если она есть, то дыры уже есть независимо от того открываю я маилслот или нет. Есть она или нет - личное дело того админа кто эту сеть админит, тем более что зачастую его вообще нет, сеть настроил знакомый компьютерный мальчик (сын директора/бухгалтера/уборщицы), тут я вообще не хочу к настройкам сети прикасаться, чтобы потом крайним не стать когда она наестся.

План Б. Настраиваем прогу на каждом компе на один и тот же UDP порт, при этом обязательно требуется разрешение брэндмауэра, дальше без всяких маилслотов широковещательно на этот порт. Минусы только в том что надо админить, т.е. переключать прогу в режим постоянного порта и открывать порт на всех компах где она запускается.

Ну и основная схема: компы находят друг-друга через мой сервер в инете, все выше написанное на случай когда он недоступен.

PS Пока не реализовано, т.к. не придумал как быть с проверкой подлинности того кто цепляется. Это сейчас выполняет сервер в инете.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / P2P по UDP / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]