PHP作为客户端访问socket的一个简单实现类
2017-01-16 16:58
627 查看
下面加粗部分能实现接收超时100ms,避免socket接收永远block问题。
<?php error_reporting(E_ALL); set_time_limit(0); ob_implicit_flush(); const SOCKET_SERV_HOST = "localhost"; const SOCKET_SERV_PORT = 1234; class RCSocket{ private $socket; private $host=SOCKET_SERV_HOST; private $port=SOCKET_SERV_PORT; public function __set($name,$value){ $this->$name=$value; } public function __construct($host=SOCKET_SERV_HOST,$port=SOCKET_SERV_PORT){ $this->host=$host; $this->port=$port; $this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if(!$this->socket){ echo "socket_create() failed: " . socket_strerror(socket_last_error()); exit('Create socket failed!'); } // set no data read timeout socket_set_option($this->socket, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>0,"usec"=>100000)); $result = socket_connect($this->socket,$this->host,$this->port); if(!$result){ echo "socket_connect() failed: " . socket_strerror(socket_last_error($this->socket)); exit('Connect to socket failed!'); } //socket_set_nonblock($this->socket); } public function __desctruct(){ socket_close($this->socket); } public function send($data){ $result=socket_write($this->socket,$data); if(!$result){ exit('Sent data to socket failed!'); } } public function recv($cnt){ return socket_read($this->socket, $cnt); } } ?>
相关文章推荐
- socket下server端支持多客户端并发访问简单实现
- PHP基于socket实现的简单客户端和服务端通讯功能示例
- socket下server端支持多客户端并发访问简单实现
- 01 TCP Socket 编程_一个简单的服务端程序和客户端程序实现
- [转载]socket下server端支持多客户端并发访问简单实现
- 2016windows(10) wamp 最简单30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world
- VC写的socket程序实现一个简单Echo服务器端和客户端程序
- PHP实现MVC开发: 一个简单的MVC
- 利用Tcp和socket实现的客户端与服务端的简单通信
- 一个简单的FTP客户端 实现上传下载
- C++ 简单的 Tcp 实现[socket] 客户端与客户端通信
- 利用org.apache.commons.net.ftp包实现一个简单的ftp客户端实用类
- PHP on Windows Azure 入门教学系列(2) ——利用SQL Azure做一个简单的访问计数器
- PHP实现MVC开发: 一个简单的MVC
- 对一个Php访问Mssql操作的一个简单封装简单支持存储过程
- 用Socket实现的简单客户端和服务端程序(一)
- PHP on Windows Azure 入门教学系列(2) ——利用SQL Azure做一个简单的访问计数器
- c#实现的一个简单的FTP客户端
- 用C语言实现一个简单的HTTP客户端(HTTP Client)
- 用C语言实现一个简单的HTTP客户端(HTTP Client)