Java ServerSocket требуется для связи UDP? - PullRequest
0 голосов
/ 23 сентября 2011

У меня на экзамене был следующий вопрос:

"Допустим, вы хотите использовать UDP для клиента. Вам нужно создать новый сокет для управления параллельными соединениями в UDP? Почемуили почему нет? Что произойдет, если к этому сокету подключится несколько клиентов? "

В вопросе также упоминается класс Java TCPServer.java, который создает ServerSocket, а затем в цикле while(true) принимаетподключений и создает сокеты для входящих запросов на подключение от пользователей.

На мой взгляд, TCP-сервер используется только для TCP-подключений, поэтому невозможно использовать тот же код на стороне сервера для клиента UDP.

Ответы [ 2 ]

2 голосов
/ 23 сентября 2011

Вы на правильном пути.

ServerSockets используются для соединений TCP. DatagramSockets (которые все еще без установления соединения) используются для UDP.

И чтобы ответить на другую часть, а именно: «Что произойдет, если к этому сокету подключится несколько клиентов?» ответ:

  1. если это UDP, то все нормально, потому что он без соединения
  2. если это TCP, то ServerSocket должен увидеть запрос на соединение и создать новый Socket для двусторонней связи с этим клиентом

Чтобы ответить «Почему или почему нет» - UDP не имеет соединения, и поэтому новый Socket не используется для связи. UDP просто получает DatagramPacket и либо удаляет его (если приложение определяет, что он недействителен, имеет неправильный формат и т. Д.), Либо отвечает DatagramPacket В UDP нет соединения, нет состояния соединения и нет потоков ввода / вывода.

0 голосов
/ 23 сентября 2011

Вопрос попросил вас объяснить почему ИЛИ почему бы не .Итак, по сути, если вы не верите, что код ServerSocket будет работать для UDP, вам нужно было сказать, почему.Из вашего последнего предложения я полагаю, что вы знаете ответ на вопрос, теперь вам просто нужно записать его с уверенностью.

...