Heim  >  Artikel  >  Backend-Entwicklung  >  求php socket长连接多个来回通讯的例子或教程

求php socket长连接多个来回通讯的例子或教程

WBOY
WBOYOriginal
2016-06-13 12:17:03826Durchsuche

求php socket长连接多个来回通信的例子或教程
网上找到的例子的大概是这样的处理流程的:
socket_create //连接
socket_bind //绑定
socket_listen //监听

do {
if (收到socket_accept连接)
{
socket_read //读取接收到的信息
socket_write //传回回应信息
}
socket_close //关闭连接
} while(true);

监听之后,就等待请求,如果接收到请求之后就会读取传来的信息然后回应,回应之后就关闭连接。
(上面这些我从例子代码上理解出来的处理流程,可能我也有理解错的地方)
用这个例子试验之后发现问题是:这个例子,好像不能让客户端保持长连接,因为他 “如果接收到请求之后就会读取传来的信息然后回应,回应之后就关闭连接”

希望有大侠指点一下php socket长连接多个来回通信的实现流程,或给个教程或给个例子
------解决思路----------------------
你不在循环内 socket_close //关闭连接 不就行了?
------解决思路----------------------
php socket 服务器何必自己写呢,用 workerman socket 服务器框架啊,长链接还是短链接一个配置字段的事儿,稳定,性能又高,最主要是简单
------解决思路----------------------

<br />if (($msgsock = socket_accept($sock)) === false)<br />{<br />	echo "套接字接收失败,原因:".socket_strerror(socket_last_error($sock)) . "\n";<br />	break;<br />}<br />do {<br />	echo '阅读客户端消息\n';<br />	$buf = strlen(socket_read($msgsock, 8192));<br />	$talkback = "客户端说:$buf\n";<br />	$talkback = "服务器端说:好啊\n";<br />	flush();<br />	if (false === socket_write($msgsock, $talkback, strlen($talkback))) {<br />		echo "套接字写失败,原因:" . socket_strerror(socket_last_error($sock)) ."\n";<br />	} else {<br />		echo '发送成功';<br />	}<br />	//socket_close($msgsock);<br />	//flush();<br />} while(true);<br />

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:JMS中的讯息通信模型Nächster Artikel:PHP实现四种根本排序算法