php socket(fsockopen)函数使用代码

WBOY
Freigeben: 2016-06-20 13:01:12
Original
1478 Leute haben es durchsucht

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);
Nach dem Login kopieren

客户端代码: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);
}?>
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage