Между процессами есть сокет, общий доступ к которому осуществляется через msg. С сокетом getpeername результаты выдаются без ошибок 0.0.0.0 - PullRequest
0 голосов
/ 25 апреля 2011

Между процессами есть сокет, общий доступ к которому осуществляется через msg. С помощью сокета попробуйте получить информацию об удаленном соединении. Но результаты getpeername 0.0.0.0 без каких-либо ошибок.

Даже я проверял / proc / net / tcp нет соединения.

Вот моя деталь реализации.

  1. Для веб-сервера lighttpd получает http-соединение
  2. веб-сервер обходит принятый сокет для процесса
  3. Программа fcgi обрабатывает сокет (с веб-сервера), для простой работы.
  4. Одновременно шаг3. Процесс получает общий сокет от веб-сервера и выполняет основную процедуру hanle

[В вышеописанной процедуре шаги 3 и 4 работают одновременно Но шаг 3 прост. Шаг 3 будет завершен мгновенно, а затем веб-сервер закрывает запрос. После этого только Шаг 4 работает один. ]

За исключением getpeername в процессе (шаг 4), все остальные функции сокета в порядке; вроде как выбрать / отправить / записать

О получении peername в общем сокете между процессами не работает должным образом?

1 Ответ

0 голосов
/ 05 мая 2011

AFAIK fcgis создаются во время запуска сервера, а не при поступлении первого запроса. Поэтому сокет, переданный вашему fcgi, не может быть подключен к удаленному хосту, поэтому getpeername не может вернуть что-то отличное от localhost.http://www.fastcgi.com/devkit/doc/fcgi-spec.html#S2.2 даже утверждает, что getpeername возвращается с ошибкой для fcgis.

Если это не отвечает на ваш вопрос, я предлагаю вам показать код.

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