想用PHP做Socket服务器,不知道如何实现同时和多个不同客户端数据交互...
发布网友
发布时间:2022-04-25 03:11
我来回答
共2个回答
热心网友
时间:2022-04-07 06:22
因为只有调用了accept客户端才能连上,你如果accept下面接一个循环,那么第二个用户不是说能不能进这个循环,而是连不进……此时只有第一个用户break出了循环,然后程序回头再调用accept,第二个用户才能连上。
用多进程来处理如何?因为accept一个客户端以后,应该是马上准备accept下一个客户端才对,而不是处理完现在这个客户端才accept下一个客户端。
socket_accept以后,直接调用 pcntl_fork(),此时进程会*为两个,其中一个的pnctl_fork返回值是0,另一个不是0。不是0的那个直接继续调用socket_accept即可,是0的那个处理客户端请求。
pnctl_fork不知道在windows下能不能用。
不过返回不是0的那个进程并不是这样就完事了,还要调用pcntl_wait防止子进程卡在那边没有完全结束。你可以在主进程里时不时就调用这个,配上WNOHANG作为option参数防止没有子进程需要wait的时候卡在那边。
这都是linux下常用的处理手段。说实话本来我想让你用多线程的,不过看了一圈不知道php里怎么用线程,倒是找到了用进程的方式,所以就
热心网友
时间:2022-04-07 07:40
你知道有session这个东西吗追问依你之见这里该如何用session?
想用PHP做Socket服务器,不知道如何实现同时和多个不同客户端数据交互...
用多进程来处理如何?因为accept一个客户端以后,应该是马上准备accept下一个客户端才对,而不是处理完现在这个客户端才accept下一个客户端。socket_accept以后,直接调用 pcntl_fork(),此时进程会分裂为两个,其中一个的pnctl_fork返回值是0,另一个不是0。不是0的那个直接继续调用socket_accept即可...
php socket同时给不同用用户发消息怎么做
socket系列函数大多有一个公用参数,它代表与单个用户的连接。你可以通过 socket_write($sock,$content)向用户发送内容,socket_read($sock)接受用户发来的内容。
php的sockets是做什么用的
你使用这个socket数据结构去开始一个客户端和服务器之间的会话。这个服务器是一直在监听准备产生一个新的会话。当一个客户端连接服务器,它就打开服务器正在进行监听的一个端口进行会话。这时,服务器端接受客户端的连接请求,那么就进行一次循环。现在这个客户端就能够发送信息到服务器,服务器也能发送信息给客户端。产生...
php做的服务端 socket 该怎么传递数组传递数组
returntargets;}char转byte应该可以强转吧然后用System.arraycopy()方法把int转换的byte和强转的byte写进你的data里面然后通过socket的write()方法写过去服务器就收到了
php可不可以socket通信长连接,不断开,然后实现多次通讯?
理论上是可以的,使用PHP提供的socket相关API,主要问题是脚本执行时间。PHP运行模式分为非命令行模式及命令行模式。非命令行模式一般是用于B/S交互,max_execution_time默认为非零,也就是限制脚本执行时间。即使你设置max_execution_time为0也面临用户浏览器请求的超时问题。命令行模式下set_limit_time...
使用php开发服务端,c++做客户端,用socket进行通信,具体如何操作,谢谢...
这种东西做过,不过源代码是不可能了:P。双方通过Socket通信,需要了解每种语言操作Socket的方式。Java只写ServerSocket的代码,负责接受数据;而C++同样只是向Java所在服务器的指定Socket发数据就可以了.这里有一个需要注意的,数据格式 的问题.这个给你一个建议,不要使用Java和C++的方法来读写数据,而把...
php为什么不适合socket
作为一名非底层程序员,要想深入了解socket的内部实现机制是很困难的,我们只需明白socket是一套操作系统封装好的实现进程通信的函数,会创建和调用就够了。PHP的语言特性和自身定位决定了它只适合做socket客户端,而不适合做socket服务器端。因为socket主要面向底层和网络服务开发,一般服务器端都是用 C 或...
如何在一台服务器上部署多个node.js站点
用nginx、apache做前级分发,node服务启动在不同的端口(tcp端口 or Unix socket),很方便,nginx占80端口即可,可以方便接入各种不同的web服务(php、java)node内建服务来实现分发,原理和上面类似,只不过前级有node来占80端口。http请求产生的request对象会带有host信息,根据自己的需求,对host做一个...
php实现实时聊天?
编写客户端代码:编写客户端代码来与后端进行通信,获取聊天记录和推送消息等。部署和测试:将代码部署到服务器上,并进行测试和调试。php怎么才能实现即时通讯?如下:php实现实时通信一般有两种方式:socket或comet。socket是比较好的解决方案,问题在于不是所有的浏览器都兼容,服务器端实现起来也稍微有点...
nodejsfs模块(nodejsfs模块)
需要分别实现服务端和客户端的逻辑: 先创建一个服务端的node.js脚本index_server.js varapp=require('http').createServer(handler)//创建服务器app ,io=require('socket.io').listen(app)//引用socket.io模块监听app ,fs=require('fs')//引用文件处理模块 app.listen(80);//指定app监听的端口,第二个参数...