php socket长连接,socket是短链接吗?

用户投稿 97 0

关于“php_socket实现长连接”的问题,小编就整理了【4】个相关介绍“php_socket实现长连接”的解答:

socket是短链接吗?

不是。

socket长连接是长时间保持服务端与客户端的连接,这是相对于短连接而言。只要你两端不主动断开连接,那么该socket连接就是一直存在的,就可以收发数据。如果做得合理一点,就是在你不发数据的时候,自定义一个检测数据包,例如由客户端定时主动给服务端发送,这样服务端收到后就表明,该连接时一直保持的。直到你主动关闭一端,该连接才断开。

PHP的Socket怎么进行服务端与客户端的相互通信?

谢邀~

1. 如果服务端是做成网页(J2EE)的话,那服务端Controller层暴露请求的URL,客户端使用HttpUrlConnection或开源的网络请求框架进行请求就可以了~服务端的返回的数据格式可以使用JSON,约定好JSON的格式就可以了~

2. 如果服务端是桌面应用,那就要用到Socket编程,可以查一下Java的Socket API,思路就是服务端需要开启服务,设置IP以及端口,并开启一条线程用于一直监听本地端口,当收到客户端的请求的话,另开一条线程用于处理,处理完再返回给客户端,通信参考Socket的API。

网络连接中的长连接和短链接是什么意思?

短连接

连接->传输数据->关闭连接

比如HTTP是无状态的的短链接,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

具体就是:浏览器client发起并建立TCP连接 -> client发送HttpRequest报文 -> server接收到报文->server handle并发送HttpResponse报文给前端,发送完毕之后立即调用socket.close方法

->client接收response报文->client最终会收到server端断开TCP连接的信号->client 端断开TCP连接,具体就是调用close方法。

也可以这样说:短连接是指SOCKET连接后,发送接收完数据后马上断开连接。因为连接后接收了数据就断开了,所以每次数据接受处理不会有联系。 这也是HTTP协议无状态的原因之一。

长连接

连接->传输数据->保持连接 -> 传输数据-> ...........->直到一方关闭连接,多是客户端关闭连接。

长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。

HTTP在短链接和长连接上的选择:

单一长连接通信原理?

基本原理如下:

1. client一个线程调用远程接口,生成一个唯一的ID(比如一段随机字符串,UUID等),Dubbo是使用AtomicLong从0开始累计数字的

2. 将打包的方法调用信息(如调用的接口名称,方法名称,参数值列表等),和处理结果的回调对象callback,全部封装在一起,组成一个对象object

3. 向专门存放调用信息的全局ConcurrentHashMap里面put(ID, object)

4. 将ID和打包的方法调用信息封装成一对象connRequest,使用IoSession.write(connRequest)异步发送出去

5. 当前线程再使用callback的get()方法试图获取远程返回的结果,在get()内部,则使用synchronized获取回调对象callback的锁,再先检测是否已经获取到结果,如果没有,然后调用callback的wait()方法,释放callback上的锁,让当前线程处于等待状态。

6. 服务端接收到请求并处理后,将结果(此结果中包含了前面的ID,即回传)发送给客户端,客户端socket连接上专门监听消息的线程收到消息,分析结果,取到ID,再从前面的ConcurrentHashMap里面get(ID),从而找到callback,将方法调用结果设置到callback对象里。

到此,以上就是小编对于“php_socket实现长连接”的问题就介绍到这了,希望介绍关于“php_socket实现长连接”的【4】点解答对大家有用。

抱歉,评论功能暂时关闭!