Ben bir sunucu uygulaması (yayın) ve bir istemci (relayer) yazıyorum. Birkaç relayers, aynı zamanda yayıncı bağlanmak bilgi göndermek ve yayıncı eşleşen Relayer için iletiyi yönlendirmek olacaktır olabilir (-> yayın -> relayer73 ... örneğin relayer1, relayer2 relayer43 gönderir kim yayıncıya geri gönderir)
Ben bir telnet istemcisi ile test ettik gibi sunucu kısmı çalışıyor ve bu noktada sadece bir yankı sunucusu çalışır halde.
Ben AF_UNIX yuva kullanıyorum böylece relayer ve yayıncı hem de aynı sunucu üzerinde oturup, her iki dosya olsa farklı klasörlerde.
Ben Relayer için iki yaklaşım denedim ve hem de ilk socket_create kullanıyor, başarısız oldu:
public function __construct()
{
// where is the socket server?
$this->_sHost = 'tcp://127.0.0.1';
$this->_iPort = 11225;
// open a client connection
$this->_hSocket = socket_create(AF_UNIX, SOCK_STREAM, 0);
echo 'Attempting to connect to '.$this->_sHost.' on port '.$this->_iPort .'...';
$result = socket_connect($this->_hSocket, $this->_sHost, $this->_iPort);
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($this->_hSocket)) . "\n";
} else {
echo "OK.\n";
}
Bu ": socket_connect (): bağlanamıyor [2]: Uyarı 27. satırda relayer.class.php böyle bir dosya ya da dizin yok" döndürür ve (komut satırından ve çalışan) genellikle aynı zamanda bir segmentasyon hatası döndürür.
İkinci yaklaşım pfsockopen kullanıyor:
public function __construct()
{
// where is the socket server?
$this->_sHost = 'tcp://127.0.0.1';
$this->_iPort = 11225;
// open a client connection
$fp = pfsockopen ($this->_sHost, $this->_iPort, $errno, $errstr);
if (!$fp)
{
$result = "Error: could not open socket connection";
}
else
{
// get the welcome message
fgets ($fp, 1024);
// write the user string to the socket
fputs ($fp, 'Message ' . __LINE__);
// get the result
$result .= fgets ($fp, 1024);
// close the connection
fputs ($fp, "END");
fclose ($fp);
// trim the result and remove the starting ?
$result = trim($result);
$result = substr($result, 2);
// now print it to the browser
}
"on line 33 relayer.class.php içinde :/ / 127.0.0.1:11225 tcp bağlanamıyor (Bağlantı reddedildi): pfsockopen () Uyarı" sadece bir hata döndürür
Tüm testlerde farklı konak isimlerini, 127.0.0.1, localhost, tcp :/ / 127.0.0.1, 192.168.0.199, tcp :/ / 192.168.0.199, hiçbiri çalıştı ile denedim.
Bu konuda herhangi bir fikir?