2013-07-19 7 views
1

Я использую XAMPP v3.2.1 с PHP 5.5 в Windows 7 Professional. Все должно быть в порядке, но этот фрагмент кода просто не хочет работать.PHP UNIX socket XAMPP

protected function _get_socket() 
{ 
    if (($sock = @socket_create(AF_UNIX, SOCK_STREAM, 0)) === FALSE) { 
     throw new VlaChatSe('socket_create', socket_last_error()); 
    } 
    return $sock; 
} 

Независимо от того, что я делаю, исключение выбрасывается. Я прочитал, что для сокетов UNIX мне нужен IP-протокол (0), хотя я также пробовал TCP и UDP. Я попробовал SOCK_DGRAM вместо SOCK_STREAM и пока не повезло, я также попытался переустановить XAMPP с версией php 5.4 - до сих пор не повезло. Мои параметры исчерпаны, поэтому я подумал, что вы можете мне помочь ... Однако я полагаю, что UNIX-сокеты не работают в Windows, потому что подобный код отлично работал в среде * nix.

ответ

2

В Windows не реализованы сокеты домена Unix, поэтому вам придется использовать альтернативу. Ближайший эквивалент называется pipe, но я не знаю, как использовать их из PHP. Возможной альтернативой могут быть сокеты TCP, связанные с интерфейсом loopback, хотя они связаны с номером порта, а не с именем файла.

+0

Является ли это документированным где угодно? – core1024

+0

Я не могу найти окончательный список семейств адресов и протоколов, поддерживаемых winsock, поэтому у меня нет доказательств того, что они не поддерживаются, но если у окон были сокеты домена Unix, это было бы хорошо известно, и оно должно быть документировано здесь: http: //msdn.microsoft.com/en-us/library/windows/desktop/ms740506(v=vs.85).aspx Трудно доказать отрицательный ... – Joni