在php中使用socket进行tcp链接
2015年1月21日
没有评论
今天提供一个php利用socket建立tcp链接的类,当然后面可能会对这个类进行升级。php对C语言的socket操作进行了很好的封装和继承,而且个人感觉使用起来也比C语言方便很多(可能因为我本身就是一个phper而不是一个C语言开发者)。
class TcpScoket{ var $address; var $port; var $sock; var $sockResult; var $recvMsg=''; function __construct($address,$port=80){ $this->address = $address; $this->port = $port; $this->sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); if(!$this->sock) $this->getLastError(); $this->sockResult = socket_connect($this->sock,$this->address,$this->port); if(!$this->sockResult) $this->getLastError(); } /** * 发送信息 * @param string $msg 发送信息 * @return mix 成功返回发送字符数,失败返回false */ function sendMsg($msg){ $msgLen = strlen($msg); $num = socket_send($this->sock,$msg,$msgLen,0); return $num; } /** * 接受信息 * @param integer $len buff长度 * @return string 接受信息 */ function recvMsg($len=512){ while(true){ $num = @socket_recv($this->sock,$buffer,$len,0); if($num){ $this->recvMsg.=$buffer; }else{ break; } } return $this->recvMsg; } /** * 获得上次的socket错误 * @return void */ function getLastError(){ $error = socket_last_error(); echo socket_strerror($error); exit; } function __destruct(){ socket_close($this->sock); } }// end of class
使用它也是非常简单的,下面给出一个很简单的example,当然也欢迎大家补充.
$tcp = new TcpScoket("127.0.0.1",5730); $tcp->sendMsg("你好"); echo $tcp->recvMsg();
近期评论