Я пишу заявление, и я не понимаю суть.Я пытаюсь получить данные от конкретного клиента.В TCP-сокете accept возвращает вам номер fd
, чтобы вы могли общаться по этому номеру fd
с конкретным клиентом.
В recvfrom
ничто не может указывать на получение данных от этого клиента.Он получает данные от всех, кто отправил.Я пытаюсь решить эту проблему, но я не уверен, как это сделать.
Вторая проблема заключается в том, что после открытия сокета я открываю другой сокет.Я посылаю второй номер сокета клиенту, и клиент отправляет вторые данные на этот второй сокет.На стороне сервера сервер слушает первый сокет (а не второй сокет).Но хотя клиент отправляет данные из второго сокета, а сервер прослушивает первый сокет, сервер получает данные.Я печатаю два сокета как целое число и вижу, что два отличаются.Как сервер может читать данные, которые отправляются во второй сокет, на первый сокет?
Да, мой вопрос немного сложен.В основном я говорю:
recvfrom(sock, &client, sizeof(Client), MSG_WAITALL, (struct sockaddr *)&clientAddr2, &size);
Как можно сказать конкретному клиенту (скажем, клиент 2) прослушать в строке выше?(в сокетах TCP это делается по номеру fd
, но как в сокете UDP?).