Unix Sockets в C - цикл в читающем сокете - PullRequest
0 голосов
/ 31 октября 2011

У меня есть два процесса с сокетным соединением.Один процесс записывает одну вещь в сокет, а затем закрывает соединение.Другой процесс ожидает прослушивания, и когда соединение принято, он входит в цикл «чтения», поэтому он получает сообщение от первого процесса и делает все, что с ним связано, а затем ожидает других сообщений от первого процесса.,Когда первый процесс закрывается, второй процесс снова и снова читает одно и то же сообщение и, конечно, делает все, что с ним связано, снова и снова. Что здесь произошло и как мне его передать?

Ответы [ 2 ]

2 голосов
/ 31 октября 2011

Вы должны игнорировать условие EOS и, возможно, вообще игнорировать значение, возвращаемое read ().Он возвращает положительное число байтов, или ноль в EOS, или -1 при ошибке с ошибкой.Если вы получаете ноль, вы должны закрыть сокет и прекратить чтение;если вы получите -1 в большинстве случаев то же самое;если вы получили положительное число байтов, вы должны обработать только столько байтов в буфере чтения.

0 голосов
/ 31 октября 2011

Трудно сказать без кода под рукой, но я всегда писал свой код сокета на основе руководства Биджа , и он никогда не подводил.Возможно, вы найдете ответ там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...