В настоящее время я занят работой над инструментом запрета IP для ранних версий Call of Duty 1. (По-видимому, такая функция не была реализована в этих версиях).Опрос серверов в одном порту - Темы и Java
Я закончил однопоточное приложение, но он не будет работать достаточно хорошо для нескольких серверов, поэтому я пытаюсь реализовать потоки.
Прямо сейчас, каждый сервер имеет свою собственную нить. У меня есть класс Networking, который имеет метод; «GetStatus» - этот метод синхронизирован. Этот метод использует DatagramSocket для связи с сервером. Поскольку этот метод статичен и синхронизирован, я не должен беспокоиться и получать целую кучу исключений «Адрес уже в использовании».
Однако у меня есть второй метод «SendMessage». Этот метод должен отправить сообщение на сервер. Как я могу убедиться, что «SendMessage» не может быть вызван, когда уже есть поток, запущенный в «GetStatus», и наоборот? Если я сделаю оба синхронизированных, у меня все равно возникнут проблемы, если Thread A откроет сокет на порте 99999 и вызовет «SendMessage», а Thread B откроет сокет на том же порту и вызовет «GetStatus»? (Игровые серверы обычно размещаются на одних и тех же портах)
Я думаю, что я действительно хочу, чтобы весь класс синхронизировался, так что только один метод можно вызвать и запустить за один раз одним потоком.
Надеюсь, что то, что я пытаюсь выполнить/избежать, излагается в этом тексте.
Любая помощь очень ценится.
btw, 99999 не является допустимым портом - порты представляют собой 16-разрядные номера без знака – mdma
Что такое синхронизация SendMessage и GetStatus? – Kiril
Порт 99999 был всего лишь примером, вы могли бы сказать мне, что «Порт XXXXX» не является допустимым портом, если я написал это? Что относительно "Порт"? –
John