C: розетки без остановки и ожидания - PullRequest
0 голосов
/ 19 марта 2011

Я создаю tftp-подобную программу, но вместо того, чтобы останавливаться и ждать, я пытаюсь использовать подход с возвратом назад. Я не совсем уверен, как это сделать, так как у меня очень мало опыта программирования сокетов.

Мой клиент отправляет все данные с помощью sendto, и в настоящее время я просто не вызываю recvfrom, потому что он будет ждать, пока я получу ответ, но я не хочу, чтобы он ждал. Я хочу проверить, был ли ответ, но если нет, продолжайте отправлять данные.

Может ли кто-нибудь указать мне правильное направление? Пожалуйста, дайте мне знать, если вам нужно больше информации, у меня возникли проблемы при разработке.

Спасибо!

1 Ответ

2 голосов
/ 19 марта 2011

Создайте неблокирующий сокет и используйте select() (или poll() или любой другой имеющийся у вас механизм), чтобы дождаться как возможности записи, так и читаемости сокета. Затем соответствующим образом реагируйте на каждое состояние, когда оно возникает.

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

...