Php socket programozás - létrehozását szerver socket

Page 3 4

Létrehozása a szerveren aljzatok

socket_bind ($ socket, $ cím [, $ port]);

A második lépés: létrehozni egy socket hallgatni a forgalom próbál csatlakozni hozzá. Ezt használja socket_listen () funkció:

Amennyiben $ aljzat - az aljzat köti előtt, hogy fel kell venni a proslushinanie. Az opcionális paraméter $ a lemaradás létrehozásához használt megbízás megadásával maximális számát bejövő kapcsolatok kerülnek a sorban. Ha ez a paraméter nincs megadva, akkor az aljzat próbál kapcsolódni megkapja a szolgáltatás megtagadása, amíg a szerver socket nem elérhető. Ennek eredményeként a függvény egy logikai érték, amely jelzi a siker a beállításokat a szerver socket hallgatási.

A harmadik és egyben utolsó lépés létre egy szerver socket -, hogy a parancsot, hogy a bejövő kapcsolatok fogadására. Ez úgy történik, socket_accept () függvényt:

Amennyiben $ aljzat - aljzat kötött bele a meghallgatás, amely a kapcsolatok fogadására.

Elvégzése során ez a funkció nem fog visszatérni, amíg amíg hallgat a bejövő kapcsolatokat. Miután sikerült telepíteni, akkor a függvény egy új erőforrást a foglalat csatlakoztatásához használt. Ha a megadott paraméter az $ socket socket van kialakítva, nem blokkoló, socket_accept () függvény mindig azonnal visszatér hamis.

A foglalat erőforrás által visszaadott socket_accept (), nem lehet újra felhasználni, mivel az kizárólag egy adott aktuális kapcsolatban. Socket átadott az aljzatban paraméter $ azonban újra fel lehet használni.

Listing alatti aljzat létrehozott egy egyszerű szerver, amely elfogad egy kapcsolat, maximum 1024 bájt bemeneti és megjeleníti ezt az áramot a felhasználó számára.

Létrehozása egyszerű szerver-alapú socket

A számítógépen, ez a szkript a mappában Denver az úton: C: \ Web szerverekhez \ home \ app.loc \ www \ foglalatok \ test.php
Most, ha fut a script a parancssorban Makár: C: \ Web szerverekhez \ home \ app.loc \ www \ aljzatok> php test.php, látni fogjuk a következő parancsot:

A szerver küld nekünk vissza ugyanazt a lekérdezést + fejlécek:

A parancssorban, látni fogjuk, az új adatok

Csakúgy, mint egy új bemeneti prompt - bizonyíték arra, hogy a folyamat elájult. Azt is ellenőrizze a netstat -a parancsot, és Ubud, a port 4545 a listában nem szerepel.

Ahhoz, hogy hozzon létre egy kiszolgáló socket amely portokat figyelik 1000 alatt, a felhasználónak rendszergazdai jogosultságokkal kell rendelkeznie a rendszerben. Azt is meg kell jegyezni, hogy a fenti forgatókönyv nem áll le, amíg a kapcsolat létrejön, ami a benyomást kelti, „lebeg”.