Там есть около 15 независимых вопросов, но я постараюсь ответить на них:
Существует метод bind (), а также connect () и disconnect ().Там нет unbind ().Это связано с тем, что при отключении сокета нет связи?
bind()
отделен от connect()
и disconnect()
.Bind используется для привязки сокета к определенному порту - фактически для «прослушивания» соединений, тогда как connect()
используется для открытия соединения с сокетом, который уже прослушивает определенный порт.Эквивалент unbind()
равен close()
Собирается ли сборщик мусора после выхода из программы?Или это даже не правильный вопрос?
Это полностью правильный вопрос, хотя сборка мусора - это технология, используемая для управления памятью, а не для управления ресурсами сокетов / ОС.Если вы не освободите определенный порт, он останется связанным с вашим приложением до тех пор, пока ваше приложение не прекратит работу, а затем будет возвращен ОС.Это функциональность на уровне ОС, а не функциональность JVM и т. Д.
Кроме того, чем отличается создание DatagramSocket, если я только предоставляю порт или указываю порт и адрес?
В какой-то момент вам необходимо указать интернет-адрес и порт или сокет, к которому вы хотите подключиться или к которому привязать.Там нет никакого способа обойти это.
Я создаю программу для сбора данных из сети, так как данные перемещаются и регистрируют их.Должен ли я просто использовать локальный адрес?Не могу ли использовать адрес при создании сокета, чтобы я не мог собирать пакеты?
Я не уверен, что вы спрашиваете здесь, вы говорите о регистрации всех пакетов насеть, ака снифер?Это потребует больше, чем простое программирование дейтаграмм.На самом деле вам нужно ввести себя на уровне сетевого адаптера, чтобы перехватывать пакеты, когда они считываются с линии.То, о чем вы говорите, позволит вам только получать пакеты, отправленные на определенный порт, который вы слушаете.