zhulinjie

V1

2022/05/28阅读:20主题:默认主题

socket客户端与服务端连接

socket客户端与服务端连接

基于TCP

服务端

vi 1.php

<?php

$socket = stream_socket_server('tcp://0.0.0.0:8010'$errno$errstr);

if (!$socket) {
    echo "$errstr($errno)<br/>";
else {
    for(;;) {
        $client = stream_socket_accept($socket, -1);
        if ($client) {
            $data = fread($client, 1024);
            fwrite($client$data);
        }
        fclose($client);
    }
    fclose($socket);
}

运行1.php

php 1.php

查看服务端状态

netstat -nat | grep LISTEN

客户端

vi 2.php

<?php

$conn = stream_socket_client('tcp://0.0.0.0:8010'$errno$errstr, 1);

if (!$conn) {
    echo "$errstr($errno)<br/>";
else {
    stream_socket_sendto($conn"tcp\n");
    echo stream_get_contents($conn);
    fclose($conn);
}

运行2.php

php 2.php

查看运行结果

tcp

基于UDP

服务端

vi 3.php

<?php

$socket = stream_socket_server('udp://127.0.0.1:8011'$errno$errstr, STREAM_SERVER_BIND);

if (!$socket) {
    dir("$errstr($errno)");
}

do {
    $data = stream_socket_recvfrom($socket, 1024, 0, $peer);
    stream_socket_sendto($socket$data, 0, $peer);
while ($data !== false);

运行3.php

php 3.php

查看服务端状态

netstat -anp udp | grep 8011

客户端

vi 4.php

<?php

$fp = stream_socket_client('udp://127.0.0.1:8011'$errno$errstr);

if (!$fp) {
    echo "$errno$errstr";
else {
    fwrite($fp"udp\n");
    echo fread($fp, 1024);
    fclose($fp);
}

运行4.php

php 4.php

查看运行结果

udp

分类:

后端

标签:

PHP

作者介绍

zhulinjie
V1

公众号: itidying