2009-02-18 9 views
13

Usługa hostingowa, z której korzystam obecnie, nie pozwala mi używać gniazd, prawdopodobnie z dobrego powodu z ich strony. Pozwalają jednak na użycie fsockopen. Zastanawiam się jaka jest różnica, ponieważ niektóre skrypty, które działały z socket_create, a nawet stream_socket_server, nie działają z fsockopen. Powiedział, że jeśli powinien działać fsockopen, mój kod znajduje się poniżej. To, co robi, to słucha na własnym adresie IP dla przychodzących pakietów udp i czyta je.socket_create vs. fsockopen php

Dzięki

$sock = fsockopen("udp://x.x.x.x", $port); 
while(1) 
{ 
    $buf = fread($sock, 200); 
    flush(); 
    ob_flush(); 
} 

Odpowiedz

11

fsockopen tworzy połączenie z hostem, a nie gniazdem słuchania.

fsockopen ($ adres) ~ == socket_connect (socket_create(), $ adres)

Twój dostawca hostingu nie chce słuchasz co drugi portów/protokołów.

Jeśli to, co robisz, nie liczę na to, że zawsze działa tak, jak byłoby to błędem.

+0

dzięki "fsockopen == socket_connect (socket_create(), $ address)" było dokładnie tym, czego szukałem. wygląda na to, że muszę znaleźć nowego hosta: P – Samuel

+0

gdzie mogę uzyskać bardziej szczegółowe informacje, aby uzyskać odpowiedź. czy nie ma programu nasłuchującego na porcie 80? nie jest programem słuchającym na 80 gniazdach nasłuchujących? –

+0

@JayapalChandran to, co Samuel chciał zrobić, to napisać program, który nasłuchuje na porcie 80, nie łączyć się z nim. Chciał zaakceptować połączenia (uproszczenie, ponieważ UDP jest bezpaństwowcem). To może być dobry początek, jeśli chcesz dowiedzieć się więcej: http://en.wikipedia.org/wiki/Network_socket –