php socket实例

之前一直听说socket,也没有研究过。最近在研究golang。简单的研究了一下golang的socket。今天也顺便在网上看看php的socket。总结一个简单的例子。

服务器端的代码:

//socket绑定的地址
define("HOST", "localhost");

//需要监听的端口
define("PORT", "8001");

// 设置超时时间
set_time_limit(0);

// 创建一个Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");

//绑定Socket到端口
socket_bind($socket, HOST, PORT) or die("Could not bind to socket\n");

// 开始监听链接
socket_listen($socket, 3) or die("Could not set up socket listener\n");

//写一个循环不断监听 连接过来的socket
while(true){
    print_r("\n\nWaiting client socket ... \n");

    //等待一个socket的连接
    $connection = socket_accept($socket);

    //将数据输出给客户但socket
    socket_write($connection, "Hello client\n");

    // 获得客户端的输入
    $input = socket_read($connection, 1024) or die("Could not read input\n");

    //输出客户端传递过来的数据
    print_r($input);

    //关闭客户端的socket连接
    socket_close($connection);
}

// 关闭sockets
socket_close($socket);

客户端地址:

<?php
//socket绑定的地址
define("HOST", "localhost");

//需要监听的端口
define("PORT", "8001");

// 设置超时时间
set_time_limit(0);

// 创建一个Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");

//连接服务器
socket_connect($socket,HOST, PORT);

echo("Writing to server socket ...\n");

//尝试将数据写给服务器
if (!socket_write($socket, "Hello server\n")) {
    echo("Write failed \n\n");
}

//从服务器获取数据
$data = socket_read($socket, PORT);
echo $data;
?>

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>