Socket基本使用-极简
侧边栏壁纸
博主昵称
404

  • 累计撰写 17 篇文章
  • 累计收到 0 条评论

Socket基本使用-极简

404
404
2022-07-28 / 0 评论 / 21 阅读 / 正在检测是否收录...
/**
 *  
 * AF_INET:  IPv4网络协议。TCP,UDP都可使用此协议。
 * AF_INET6: IPv6网络协议。TCP,UDP都可使用此协议。
 * AF_UNIX:     本地通信协议,具有高性能和低成本的IPC(进程间通讯)
 * 
 * SOCK_STREAM    TCP协议套接字
 * SOCK_DGRAM    UDP协议套接字
 * 
 * SOL_TCP:      TCP协议
 * SOL_UDP:      UDP协议
 * 
 * 运行 php server.php 服务端
 * 运行 php client.php 客户端
 * 查看 netstat -an|grep 6001
**/

//创建一个socket资源    参数1:网络协议 2:套接字类型 3:协议
$socket1 = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);

//绑定到IP上    端口1-65535都可以使用 1-1024root用户才可使用
socket_bind($socket1, '127.0.0.1',6001);

//负责监听
socket_listen($socket1,3);

//scoket2 负责处理通讯(处理客户端接收和发送)
$socket2 = socket_accept($socket1);

//读取客户端发送的数据 读取大小字节1024可自由设置
$res = socket_read($socket2, 1024);


echo $res.PHP_EOL;

//向客户端反馈信息
socket_write($socket2,'hello client'.time());

//关闭socket
socket_close($socket1);
socket_close($socket2);

<?php
$host = '127.0.0.1';
$port = 6001;
$sock = null;

//创建socket
if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) === false ){
    echo "socket_create() failed : reason:" . socket_strerror(socket_last_error()) . "\n";
    return;
}

//连接socket

if($con = socket_connect($sock, $host, $port) === false) {
    echo "connect fail" . "\n";
    return;
}else{
    echo "connect success" . "\n";
}

$client_msg = 'hello server!';

//向连接成功的socket发送信息
if(socket_write($sock, $client_msg, strlen($client_msg)) === false ){
    echo "fail to write" . socket_strerror(socket_last_error());
}else{
    echo "client write success" . PHP_EOL . "\n";
    //读取服务端返回来的套接流信息
    while ($serverback = socket_read($sock,1024)) {
        echo 'server return message is :' . PHP_EOL . $serverback . "\n";
    }
}
0

评论 (0)

取消