
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
作者介绍

zhulinjie
V1
公众号: itidying