В проекте, над которым я работаю, P2P используется для передачи данных между пирами, что сильно отличается от Bittorrent. Этот компонент выполняет случайное сканирование на каждом интерфейсе, чтобы увидеть, какие устройства находятся в сети. До сих пор оно было реализовано как соединение Socket, которое проверяет, удалось ли ему установить соединение, пытаясь подключиться к порту прослушивания программы. Мне интересно, будет ли быстрее разорвать это и сделать трансляцию на каждом интерфейсе. Будет ли это быстрее / надежнее?
Текущий код для подключения выглядит следующим образом:
Socket testSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
testSock.BeginConnect(iep, new AsyncCallback(ConnectedAsync), testSock);
for (int i = 0; i <= iterations && Thread.CurrentThread.IsAlive; i++)
{
if (testSock.Connected)
break;
Thread.Sleep(25);
}
testSock.Close(0);
Компонент 'random' - это простой
Random r = new Random();
для каждой подсети интерфейса.
Из моего опыта с вещанием (Wireshark, DHCP и т. Д.) У меня сложилось впечатление, что вещание будет загружаться быстрее и использовать кучу ресурсов меньше. Причина, по которой я спрашиваю, состоит в том, что человек, который написал это, - умный парень, и мне интересно, почему он не использовал вещание.
Так стоит ли усилий?