php-socket理论代码(02)

socket_server服务器端:

<\?php
/*
+——————————-
* @socket通信整个过程
+——————————-
* @socket_create
* @socket_bind
* @socket_listen
* @socket_accept
* @socket_read
* @socket_write
* @socket_close
+——————————–
*/
//确保连接客户端不会超时
set_time_limit(0);
$ip = ‘127.0.0.1’;
$port = 8080;
//创建一个socket
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if($sock < 0){
echo “创建失败原因:” . socket_strerror($sock) . “\n”;
}
//socket_close($sock);
//绑定socket到端口
$ret = socket_bind($sock, $ip, $port);
if($ret < 0){
echo “socket_bind()失败:” . socket_strerror($sock) . “\n”;
}
//监听socket连接
$ret = socket_listen($sock, 4);
if($ret < 0){
echo “socket_listen失败:” . socket_strerror($sock) . “\n”;
}
//挂起socket进程
$count = 0;
while(true){
//堵塞等待另接受一个Socket来处理通信
$msgsock = socket_accept($sock);
if($msgsock < 0){
echo “socket_accept:” . socket_strerror($msgsock) . “\n”;
break;
}else{
//发送消息到客户端
$msg = “发送给客户端的消息测试成功”;
socket_write($msgsock, $msg, strlen($msg));

    //接受客户端消息,
    \$buf     = socket_read(\$msgsock, 8192);
    \$talkmsg = "收到客户端的消息:" . \$buf . "\n";
    echo \$talkmsg;
}
socket_close(\$msgsock);

}
socket_close($sock);

socket_client客户端

注意

服务器端接着处于监听状态,每次client请求都会接到反馈,注意该列使用的socket通讯方式其实是很落后的同步阻塞 IO 模型,其上还有同步非阻塞 IO 模型(select/poll 的同步模型)以及使用 epoll/kqueue 的异步模型:属于异步阻塞/非阻塞 IO 模型;(大多数都是epoll/kqueue模型)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值