Home >Backend Development >PHP Tutorial >Use socket series functions to connect to TCP services
First of all, we need to have a tcp service. We use the socket series functions in php to implement
<?php //创建socket套接字 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); //设置阻塞模式 socket_set_block($socket); //为套接字绑定ip和端口 socket_bind($socket,'127.0.0.1',3046); //监听socket socket_listen($socket,4); while(true) { //接收客户端请求 if(($msgsocket = socket_accept($socket)) !== false) { //读取请求内容 $buf = socket_read($msgsocket, 8192); echo "Received msg: $buf \n"; $str = "this is a service message"; //向连接的客户端发送数据 socket_write($msgsocket, $str,strlen($str)); //操作完之后需要关闭该连接否则 feof() 函数无法正确识别打开的句柄是否读取完成 socket_close($msgsocket); } }
Connect to the tcp service:
Use socket series functions to connect
<?php $st="socket send message"; $length = strlen($st); //创建tcp套接字 $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); //连接tcp socket_connect($socket, '127.0.0.1',3046); //向打开的套集字写入数据(发送数据) $s = socket_write($socket, $st, $length); //从套接字中获取服务器发送来的数据 $msg = socket_read($socket,8190); echo $msg; //关闭连接 socket_close($socket);
Use fsockopen to connect
<?php //使用 fsockopen 打开tcp连接句柄 $fp = fsockopen("tcp://127.0.0.1",3046); $msg = "fsockopen send message"; //向句柄中写入数据 fwrite($fp,$msg); $ret = ""; //循环遍历获取句柄中的数据,其中 feof() 判断文件指针是否指到文件末尾 while (!feof($fp)){ stream_set_timeout($fp, 2); $ret .= fgets($fp, 128); } //关闭句柄 fclose($fp); echo $ret;
Use stream_socket_client Connection
<?php //使用 stream_socket_client 打开 tcp 连接 $fp = stream_socket_client("tcp://127.0.0.1:3046"); $msg = "fsockopen send message"; //向句柄中写入数据 fwrite($fp,$msg); $ret = ""; //循环遍历获取句柄中的数据,其中 feof() 判断文件指针是否指到文件末尾 while (!feof($fp)){ stream_set_timeout($fp, 2); $ret .= fgets($fp, 128); } //关闭句柄 fclose($fp); echo $ret;
Recommended related articles and tutorials: php tutorial
The above is the detailed content of Use socket series functions to connect to TCP services. For more information, please follow other related articles on the PHP Chinese website!