使用PHP创建SOCKET服务
生活随笔
收集整理的這篇文章主要介紹了
使用PHP创建SOCKET服务
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
最近好奇,接觸接觸PHP的socket編程,發(fā)現(xiàn)還是很好玩兒的。下面貼出來demo源碼跟大家分享
Server.php
<?php/*** PHP Socket Server* */ //確保客戶端連接時(shí)不會(huì)超時(shí) error_reporting(0); set_time_limit(0); //設(shè)置地址與端口 $address = '127.0.0.1'; //服務(wù)端ip $port = 2046; //創(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() failed : ".socket_strerror(socket_last_error()). "\n"); //阻塞模式 socket_set_block($sock) or die("socket_set_block() failed : ".socket_strerror(socket_last_error()) ."\n");//綁定到socket端口 $result = socket_bind($sock, $address, $port) or die("socket_bind() failed : ". socket_strerror(socket_last_error()) . "\n"); //開始監(jiān)聽 $result = socket_listen($sock, 4) or die("socket_listen() failed : ". socket_strerror(socket_last_error()) . "\n"); echo "OK\nBinding the socket on $address:$port ...\n"; echo "OK\nNow ready to accept connections.\nListening on the socket ...\n";do {//Never stop the daemon//它接收連接請求并調(diào)用一個(gè)子鏈接socket來處理客戶端和服務(wù)器間的信息$msgsock = socket_accept($sock) or die("sock_accept() failed : ". socket_strerror(socket_last_error()) . "\n");//讀取客戶端數(shù)據(jù)echo "Read client data \n";$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 : ". socket_strerror(socket_last_error()). "\n");//輸出返回到客戶端時(shí),父/子socket都應(yīng)通過socket_close來終止socket_close($msgsock); }while(true);socket_close($sock);Client.php
<?php /*** php socket client* */error_reporting(0); set_time_limit(0);$host = '127.0.0.1'; $port = 2046;$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket.\n");$connection = socket_connect($socket, $host, $port) or die("Could not connect server.\n"); socket_write($socket, "Hello Socket!") or die("Write failed.\n"); while($buff = socket_read($socket, 1024, PHP_NORMAL_READ)) {echo "Response was : ". $buff . "\n"; }socket_close($socket);
總結(jié)
以上是生活随笔為你收集整理的使用PHP创建SOCKET服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell循环遍历多条字符串
- 下一篇: 跟angular2学一键开启项目--关于