background image

PHP 示例:php socket(fsockopen)的应用实例分

本文是对 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='red'>server send:welcome</font><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

;