Ai
1 Star 0 Fork 0

hphper/linux_c

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
socket_fork.php 1.33 KB
一键复制 编辑 原始数据 按行查看 历史
hk 提交于 2019-10-14 23:39 +08:00 . reuse_port
<?php
$listen = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($listen, '0.0.0.0', 9999);
socket_listen($listen);
$title="socket_fork";
cli_set_process_title( $title."-parent" );
for ($i = 0; $i < 5; $i++) {
$pid = pcntl_fork();
if (0 == $pid) {
cli_set_process_title( $title."-child"."-".$i );
while (true) {
$sock_client = socket_accept($listen);
if ($sock_client) {
if (socket_getpeername($sock_client, $clinet_addr, $client_port)) {
echo " client:" . intval($sock_client) . " from {$clinet_addr}:$client_port" . PHP_EOL;
sayWelcome($sock_client);
}
while (true) {
//接收到不少于10个的时候才返回
$len = socket_recv($sock_client, $buf, 10, MSG_WAITALL);
echo "recv:" . $buf . PHP_EOL;
socket_write($sock_client, $buf, $len);
}
} else {
echo "client connect fail" . PHP_EOL;
}
}
}
}
while($pid=pcntl_wait($status)){
echo $pid." exit".PHP_EOL;
}
socket_close($sock_client);
function sayWelcome($client)
{
$buf = date("H:i:s") . " welcome to server! you id:" . intval($client) . PHP_EOL;
socket_write($client, $buf, strlen($buf));
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/hk/process_thread_study.git
git@gitee.com:hk/process_thread_study.git
hk
process_thread_study
linux_c
master

搜索帮助