亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

PHP如何實現(xiàn)簡單的Socket

來源:涼官灰 發(fā)布時間:2020-05-20 09:50:40 閱讀量:1709

PHP如何實現(xiàn)簡單的Socket

首先使用PHP制作的Socket服務端,其主要是設置Socket的IP地址及端口號;然后監(jiān)聽端口,如果有客戶端連接的話,則接收連接請求和數(shù)據(jù),最后處理數(shù)據(jù)并且返回數(shù)據(jù)即可。

示例代碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

<?php

//確保在連接客戶端時不會超時

set_time_limit(0);

//設置IP和端口號

$address = "127.0.0.1";

$port = 2048; //調(diào)試的時候,可以多換端口來測試程序!

/**

 * 創(chuàng)建一個SOCKET

 * AF_INET=是ipv4 如果用ipv6,則參數(shù)為 AF_INET6

 * SOCK_STREAM為socket的tcp類型,如果是UDP則使用SOCK_DGRAM

*/

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("socket_create() 失敗的原因是:" . socket_strerror(socket_last_error()) . "/n");

//阻塞模式

socket_set_block($sock) or die("socket_set_block() 失敗的原因是:" . socket_strerror(socket_last_error()) . "/n");

//綁定到socket端口

$result = socket_bind($sock, $address, $port) or die("socket_bind() 失敗的原因是:" . socket_strerror(socket_last_error()) . "/n");

//開始監(jiān)聽

$result = socket_listen($sock, 4) or die("socket_listen() 失敗的原因是:" . socket_strerror(socket_last_error()) . "/n");

echo "OK\nBinding the socket on $address:$port ... ";

echo "OK\nNow ready to accept connections.\nListening on the socket ... \n";

do { // never stop the daemon

 //它接收連接請求并調(diào)用一個子連接Socket來處理客戶端和服務器間的信息

 $msgsock = socket_accept($sock) or die("socket_accept() failed: reason: " . socket_strerror(socket_last_error()) . "/n");

  

 //讀取客戶端數(shù)據(jù)

 echo "Read client data \n";

 //socket_read函數(shù)會一直讀取客戶端數(shù)據(jù),直到遇見\n,\t或者\0字符.PHP腳本把這寫字符看做是輸入的結(jié)束符.

 $buf = socket_read($msgsock, 8192);

 echo "Received msg: $buf \n";

  

 //數(shù)據(jù)傳送 向客戶端寫入返回結(jié)果

 $msg = "welcome \n";

 socket_write($msgsock, $msg, strlen($msg)) or die("socket_write() failed: reason: " . socket_strerror(socket_last_error()) ."/n");

 //一旦輸出被返回到客戶端,父/子socket都應通過socket_close($msgsock)函數(shù)來終止

 socket_close($msgsock);

} while (true);

socket_close($sock);


標簽: PHP
分享:
評論:
你還沒有登錄,請先