Некоторые вопросы программирования сокетов UDP, в которых я запутался - PullRequest
1 голос
/ 08 мая 2011
  1. Что произойдет, если изменить как clientSocket, так и serverSocket на «mySocket»?

  2. Может ли клиент отправить сегмент на сервер, не зная IP-адрес сервера и/ или номер порта?

  3. Может ли несколько клиентов использовать сервер?

Из моих заметок на странице 20: http://www.cs.ucc.ie/~cjs/teach/cs2505/02-app-layer-b.pdf,Вид перепутал с этим.

Я предполагаю, что если вы измените и client, и serverSocket на mySocket, то ничего не произойдет, поскольку это будет только изменение имени переменной (я предполагаю).

И я предполагаю, что клиент не можетотправить сообщение, не зная IP-адрес / номер порта?

И что несколько клиентов не могут использовать сервер, так как это потребует многопоточности?

1 Ответ

3 голосов
/ 08 мая 2011

(1) Поскольку я не вижу никакой ссылки на мой сокет, кроме указанного в вопросе, я бы сказал, что ваш ответ кажется правильным.

(2) Адрес / порт явно необходимы. Однако это может быть хитрый вопрос в том, что клиент может вызвать connect () на сокете. С помощью UDP, connect () ядро ​​отслеживает адрес, переданный в вызове в качестве пира сокета. Затем сокет может просто вызвать write () или send (), вместо того, чтобы использовать sendto (). Тем не менее, для вызова connect все равно потребуется адрес / порт, поэтому кто знает, к чему они стремятся.

(3) В UDP нет «соединения». Многие клиенты могут отправлять на сервер. Сервер может получить адрес отдельных клиентов из своего recvfrom, а затем развернуться и использовать этот адрес в своем sendto.

...