草庐IT

php - PHP 如何优雅地关闭本地套接字连接...?

我有一个PHP客户端通过纯文本Unix域套接字连接到本地C服务器程序。但是,我可以很好地关闭它的唯一方法是如果我完成套接字session:stream_socket_shutdown($sock,1);//shutdownsocketwritingusleep(500*1000);//waitfor0.5secondsfclose($sock);//actuallyclosethesocket(finally)我想像我的C客户端一样优雅地关闭它:-shutdown(connection_fd,SHUT_WR);//tellserverwe'vestoppedsendingqueries

php - socket_connect 不会超时

我正在使用套接字将数据发送到可能没有响应的服务器。所以我试图通过在SO中使用此解决方案来定义超时。MakePHPsocket_connecttimeoutsocket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array('sec'=>1,'usec'=>0));socket_set_option($socket,SOL_SOCKET,SO_SNDTIMEO,array('sec'=>1,'usec'=>0));这在建立连接并且服务器响应时间过长时有效。但是当它无法创建连接时socket_connect($socket,$addr,$port)

session 中的 PHP pfsockopen

我正在用PHP开发一个MSN客户端。我有这段代码,它连接到服务器并登录到MSN:$server2=explode(":",$xfr[3]);$socket2=pfsockopen($server2[0],(int)$server2[1]);$_SESSION["socket"]=$socket;echo'Connectedto2ndserver.';//SendMSNPversionfputs($socket2,"VER0MSNP10CVR0\r\n");echofread($socket2,5000).'';//Senduser-agentfputs($socket2,"CVR10x

php - 如何从 PHP 通过 unix 套接字发送数据报?

我在做:$socket=socket_create(AF_UNIX,SOCK_DGRAM,0);if(@socket_connect($socket,$path)===false){...}但是我得到这个错误:(91):Protocolwrongtypeforsocket我是否使用了任何错误的参数?我怀疑来自第二个socket_create参数。我在文档中找不到任何帮助:http://php.net/manual/es/function.socket-create.php 最佳答案 它可能已经过时了,但我发现这种方式可以正常工作:$

php - 如何通过 PHP 套接字发送二进制表示形式?

我正在尝试通过PHP套接字发送数据的二进制表示。因此,如果数字是15,socket_write将发送00001111作为15的二进制表示。我应该怎么做? 最佳答案 使用chr函数:socket_write($fp,chr(15));您还可以使用带有十六进制值的\x转义符:socket_write($fp,"\xff\xff\xff\xff");将发送4个字节,每个字节的值为255。 关于php-如何通过PHP套接字发送二进制表示形式?,我们在StackOverflow上找到一个类似的问题

php - 使用 PHP 连接到 Ratchet 网络套接字服务器

我在后端运行RatchetWebSocketServer,一切正常。disableVersion(0);$server=\Ratchet\Server\IoServer::factory(newHttpServer($wsServer),8080);$server->run();但我想使用普通的php脚本连接到websocket以向服务器发送消息。$host='ws://localhost';//whereisthewebsocketserver$port=8080;$local="http://example.com";//urlwherethisscriptrun$data="fi

php - socket_read()中$type参数的含义

我尝试使用PHP套接字创建从C#应用程序到PHP5.3脚本的tcp/ip套接字连接。C#应用程序应将JSON字符串发送到PHP脚本。我关于thesocket_readmanual的问题:它们是什么意思:"PHP_BINARY_READ(Default)-usethesystemrecv()function.Safeforreadingbinarydata."PHP_BINARY_READ到底是做什么用的,为什么在使用这个参数时要使用recv()函数?非常感谢任何帮助。 最佳答案 重要的部分是文档中关于其他选择的内容:PHP_NORM

PHP 相当于 Ruby 的拯救

没有足够的声誉来正确标记它(ruby、PHP、socket、rescue)我已经很长时间没有练习PHP了,因为我一直在编写更多的Ruby脚本。我有点不好意思就此寻求帮助。我知道,在Ruby中,我可以使用rescue来防止脚本在出错时崩溃,我希望用PHP实现同样的目的。例如,在Ruby中:require'socket'beginputs"Connectingtohost..."host=TCPSocket.new("169.121.77.3",333)#Thiswill(intentionally)failtoconnect,triggeringtherescueclause.rescu

php - ReactPHP 套接字服务器 : What triggers the write (to client)?

当尝试写入客户端时,消息被缓冲,在某些情况下,它根本没有被写入。当前状态:当我远程登录到服务器时,ServerReady:消息很容易按预期打印出来。当我发送随机数据(“关闭”除外)时,服务器的终端每秒都很好地显示进度,但客户端输出等到所有sleep结束后,然后一次打印。最重要的是,当发送“关闭”时,它只是等待强制性的一秒钟,然后在客户端没有任何写入的情况下关闭。目标:我的主要目标是在关闭连接之前向客户端写入一条快速消息。代码://server.php$loop=React\EventLoop\Factory::create();$socket=newReact\Socket\Serve

PHP恐惧问题

我在工作中创建PHPtelnet脚本以收集网络数据时遇到了问题。因为从“Action:Status”命令返回的数据量可以是任意大小...我担心在第13行将静态数字与fread()一起使用。我也尝试过使用fgets(),但是它只获取第一行数据(METAHTTP行......没有表格)。如何使用PHP从套接字中获取任意数量的数据?请帮忙\n";}else{fwrite($ami,"Action:Login\r\nUsername:1005\r\nSecret:password\r\nEvents:off\r\n\r\n");fwrite($ami,"Action:Status\r\n\r\