void OpenConnectForTopology(int clientsCount, List <TopologyUnit> clients) { RunAcceptSocket(out Socket serverAcceptSocket, clientsCount, SERVER_PORT_FOR_TOPOLOGY); PrintMessage($"Ожидаемое число подключений: {clientsCount}"); PrintMessage("Ожидание подключений..."); for (int i = 0; i < clientsCount; i++) { Socket socket = serverAcceptSocket.Accept(); TopologyUnit newClient = new TopologyUnit(socket); clients.Add(newClient); PrintMessage("Новое подключение."); } PrintMessage("Все узлы подключились."); serverAcceptSocket.Close(); }
void SendData(TopologyUnit client, byte[] byteNeighbours) { try { client.Socket.Send(byteNeighbours); var clientId = client.Id.ToString(); client.Socket.Send(Encoding.ASCII.GetBytes(clientId)); Thread.Sleep(100); var clientAcceptPort = client.AcceptPort.ToString(); client.Socket.Send(Encoding.ASCII.GetBytes(clientAcceptPort)); } catch (Exception ex) { PrintMessage($"Соединение с клиентом (id={client.Id}) было потеряно."); PrintMessage(ex.Message); } }
List <Neighbour> GetNeighboursForClient(TopologyUnit client, List <TopologyUnit> clients) { string clientIp = client.GetIpPort(); int clientId = client.Id; PrintMessage($"Для узла {clientIp} (id = {clientId}):"); List <Neighbour> neibs = new List <Neighbour>(); while (true) { int?id = InputNeighbourId(clients.Count, clientId); if (id == null) { break; } if (id == 0) { string serverIp = GetIpAdress().ToString(); Neighbour NeibServer = new Neighbour(serverIp, 1, AcceptPort); neibs.Add(NeibServer); numberIncomingConnections++; continue; } foreach (TopologyUnit cl in clients) { if (cl.Id == id) { InputNeighbourPriority(out int priority); string ip = cl.GetIp(); int port = cl.AcceptPort; Neighbour n = new Neighbour(ip, priority, port); neibs.Add(n); break; } } } return(neibs); }
void CreateClietnsList(out List <TopologyUnit> clients) { TopologyUnit.SetStartPortValue(AcceptPort); clients = new List <TopologyUnit>(); }