получать данные из буфера при программировании сокетов

451
m-tech

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

Я могу получить приемник данных формы, но я не знаю, как сервер может найти, какие данные для какого клиента? потому что возможно 8.8.8.8 клиент отправляет 3 дейтаграммы и сервер должен сортировать data.do сервер выделяет определенный буфер для каждого клиента?

0
Добро пожаловать в Супер пользователя! Вы задаете не по теме вопрос. Пожалуйста, прочтите [On-Topic] (http://superuser.com/help/on-topic), [Как мне задать хороший вопрос?] (Http://superuser.com/help/how-to-ask) и [Какие типы вопросов мне следует избегать?] (http://superuser.com/help/dont-ask). DavidPostill 7 лет назад 0

1 ответ на вопрос

1
David Schwartz

Лучше всего разработать протокол так, чтобы сообщение содержало некоторый идентификатор источника. В противном случае вы можете использовать исходный IP-адрес и порт для определения клиента, хотя это приведет к поломке при изменении IP-адреса клиента.

Дорогой Дэвид, если linux выделяет буфер для каждого процесса, я думаю, у нас нет проблем. Но когда у нас один буфер, все сложно. Я хочу распознать данные каждого клиента. Какова твоя идея ?????? ?????? m-tech 7 лет назад 0
@ m-tech Я предложил две идеи. Первый: попросите клиента включить какой-либо идентификатор в дейтаграмму. Два: Определите клиента по IP-адресу источника и порту источника дейтаграммы. David Schwartz 7 лет назад 0

Похожие вопросы