Python +sockets

Умным способом решения вашей проблемы было бы использование Java Streams:

final String[] courseDesc = {"Computer Science", "Engineering", "Dentistry", "Architecture", "Computer Science", "Dentistry"};
final int[] courseCount = {15, 20, 10, 11, 25, 7};

Map<String, Integer> summaryReport = IntStream.range(0, courseDesc.length).boxed()
    .collect(Collectors.toMap(
        index -> courseDesc[index], index -> courseCount[index],
        (count0, count1) -> count0 + count1, LinkedHashMap::new
    ));

Это создает карту с курсом в качестве ключа и суммой в качестве значения. Если карта содержит курс и этот же курс собирается снова, лямбда-выражение (count0, count1) -> count0 + count1 обрабатывает его путем суммирования значений. LinkedHashMap::new должен поддерживать порядок.

Теперь вы можете распечатать резюме следующим образом:

summaryReport.forEach((course, count) -> System.out.println(course + " - " + count));

Результат:

Computer Science - 40
Engineering - 20
Dentistry - 17
Architecture - 11
5
задан Milen A. Radev 21 April 2009 в 18:13
поделиться

2 ответа

Вопрос немного запутанный, но я постараюсь помочь. По сути, если порт (50007) заблокирован на сервере с помощью брандмауэра, вы НЕ сможете установить TCP-соединение с ним с клиента. Это цель брандмауэра. Многие протоколы (например, SIP и bittorrent) используют стратегии навигации брандмауэра и NAT, но это сложная тема, которую вы можете получить более подробную информацию здесь . Вы заметите, что для эффективного использования bittorrent необходимо включить переадресацию портов для NAT и разблокировать диапазоны портов для брандмауэров. Также, bittorrent использует TCP-соединения для большей части передачи данных. Вывод:

Во-первых, обратите внимание, что программа BitTorrent должна устанавливать два типа соединений:

  • Исходящие HTTP-соединения с трекером, обычно через порт 6969.
  • Входящие и исходящие соединения с партнером машины, обычно с портом 6881 и выше.
7
ответ дан 14 December 2019 в 01:16
поделиться

Очень сложно понять твой вопрос ...

(...) Torrent-клиенты делают это как-то.

Torrent-клиенты могут делать это только тогда, когда маршрутизатор - устройство интернет-шлюза (IGD) - поддерживает протокол uPNP . Интересной частью вашей проблемы является раздел о прохождении NAT .

2
ответ дан 14 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: