Home >Backend Development >PHP Tutorial >php socket(fsockopen)函数使用代码

php socket(fsockopen)函数使用代码

WBOY
WBOYOriginal
2016-06-20 13:01:121493browse

php socket(fsockopen)函数的应用实例

使用fsockopen函数,首先要开启php.ini中的allow_url_open=on;

fsockopen是对socket客户端代码的封装,该函数中封装了socket_create(),socket_connect()。

服务器端代码:server.php

<?php error_reporting(E_ALL);
set_time_limit(0);
$address = "127.0.0.1";
$port = 10008;
//创建端口
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
	echo "socket_create() failed:reason:" . socket_strerror(socket_last_error()) . "\n";
}
//绑定
if (socket_bind($sock, $address, $port) === false) {
	echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
}
//监听
if (socket_listen($sock, 5) === false) {
echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
}
while (true) {
//得到一个链接
if (($msgsock = socket_accept($sock)) === false) {
	echo "socket_accepty() failed :reason:".socket_strerror(socket_last_error($sock)) . "\n";
break;
}
//welcome 发送到客户端
$msg = "1.<font color=&#039;red&#039;>server send:welcome<br>";
socket_write($msgsock, $msg, strlen($msg)); //返回信息给客户端
echo "read client message\n";
$buf = socket_read($msgsock, 8192); //获取客户端发送过来的信息
$talkback = "2.received message:$buf\n";
echo $talkback;
if (false === socket_write($msgsock, $talkback, strlen($talkback))) { //返回信息给客户端
	echo "socket_write() failed reason:" . socket_strerror(socket_last_error($sock)) ."\n";
} else {
	echo "send success";
}
socket_close($msgsock);
}
socket_close($sock);

客户端代码:fsocket.php

<?php $fp = fsockopen("127.0.0.1", 10008, &$errno, &$errstr, 10);
if (!$fp) {
echo $errstr . " (". $errno . ")<br>n";
} else {
$in = "HEAD / http/1.1\r\n";
$in .= "HOST: localhost \r\n";
$in .= "Connection: close\r\n\r\n";
fputs($fp, $in);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}?>


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn