Php Socket Programming - Crearea socketurilor pentru server

Pagina 3 din 4

Crearea socketurilor pentru server

socket_bind ($ socket, $ adresa [, $ port]);

Al doilea pas: configurați soclul pentru a asculta traficul pentru a încerca să se conecteze la acesta. Acest lucru se face cu funcția socket_listen ():







În cazul în care $ socket este un soclu anterior legat, care trebuie să fie activat pentru ascultare. Parametrul opțional de backlog $ este utilizat pentru a crea o coadă specificând numărul maxim permis de conexiuni de intrare la coadă. Dacă acest parametru nu este specificat, atunci socket-ul care încearcă să se conecteze va primi o refuzare a serviciului până când socketul pentru server este disponibil. Ca rezultat, această funcție returnează o valoare booleană indicând succesul configurației socketului pentru ascultare.

Al treilea și ultimul pas în crearea unui soclu de server este de a da o comandă pentru a accepta conexiunile primite. Acest lucru este realizat de socket_accept ():

Unde socketul $ este un soclu legat, inclus în sesiunea de ascultare, care trebuie să accepte conexiuni.

În timpul funcționării, această funcție nu va reveni la control până când conexiunile de intrare nu sunt complete. Odată instalat, funcția va returna noua resursă socket folosită pentru conexiune. Dacă socketul specificat în parametrul $ socket este configurat ca non-blocant, socket_accept () întoarce întotdeauna false imediat.







Resursa socket-ului returnată de funcția socket_accept () nu poate fi reutilizată deoarece servește doar o conexiune curentă specifică. Un soclu trecut la el în parametrul $ socket, cu toate acestea, poate fi refolosit.

Listarea de mai jos creează un server socket simplu care acceptă o singură conexiune, un maxim de 1024 octeți din fluxul de intrare și afișează acest flux către utilizator.

Crearea unui server bazat pe socket-uri simple

Am acest script pe computerul meu în dosarul Denver de-a lungul căii: C: \ WebServers \ home \ app.loc \ www \ sockets \ test.php
Acum, dacă rulați scriptul din linia de comandă, astfel încât Makar: C: \ webservere \ acasă \ app.loc \ www \ prize> test.php PHP, vom vedea în următoarea linie de comandă:

Serverul ne va trimite solicitarea și antetele în răspuns:

La linia de comandă, vom vedea noile date

Și, de asemenea, un nou prompt de intrare - o mărturie că procesul a fost întrerupt. De asemenea, puteți să o verificați cu comanda netstat -a și asigurați-vă că portul 4545 nu este prezent în listă.

Pentru a crea un server al cărui socluri ascultă în porturi numerotate sub 1000, acest utilizator trebuie să aibă drepturi administrative în sistem. Trebuie de asemenea remarcat faptul că scenariul de mai sus nu se finalizează până când nu se creează o conexiune, ceea ce poate crea impresia de a "închide".







Trimiteți-le prietenilor: