本文实例详细讲述了PHP中socket的用法,分享给大家供大家参考。具体用法如下:
一、开启socket
PHPinfo();查看是否开启了socket扩展,否则在PHP.ini中开启。
二、服务器端代码的写法
$address = '127.0.0.1'; $port = 10005; //创建端口 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"; }
do {
//得到一个链接
if (($msgsock = socket_accept($sock)) === false) {
echo "socket_accepty() Failed :reason:".socket_strerror(socket_last_error($sock)) . "\n";
break;
}
//welcome 发送到客户端
$msg = "server send:welcome
";
socket_write($msgsock,$msg,strlen($msg));
echo 'read client message\n';
$buf = socket_read($msgsock,8192);
$talkback = "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);
} while(true);
//关闭socket
socket_close($sock);
?>
服务器端需要在cli模式是执行,有可能cli模式下PHP.ini文件载入的不一样
可以像如下输出:
这时候在zhoxh目录下就有个tem.text文件。查看 Configuration File (PHP.ini) Path => C:\WINDOWS 。不是我的PHP.ini 文件,这说明调用的PHP.ini文件时错误的。这时候我们要指定PHP.ini文件命令如下
注意的是我的PHP可以直接执行时配置了环境变量。
三、客户端
tcp/ip connection
\n"; $service_port = 10005; $address = '127.0.0.1';$socket = socket_create(AF_INET,SOL_TCP); if ($socket === false) { echo "socket_create() Failed: reason: " . socket_strerror(socket_last_error()) . "\n"; } else { echo "OK. \n"; }
echo "Attempting to connect to '$address' on port '$service_port'..."; $result = socket_connect($socket,$service_port); if($result === false) { echo "socket_connect() Failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n"; } else { echo "OK \n"; } $in = "HEAD / http/1.1\r\n"; $in .= "HOST: localhost \r\n"; $in .= "Connection: close\r\n\r\n"; $out = ""; echo "sending http head request ..."; socket_write($socket,$in,strlen($in)); echo "OK\n";
echo "Reading response:\n\n"; while ($out = socket_read($socket,8192)) { echo $out; } echo "closeing socket.."; socket_close($socket); echo "ok .\n\n";
执行结果如下:
server:
client:
希望本文所述对大家的PHP程序设计有所帮助。