socket编程 for PHP

本文展示了一个使用PHP实现的简单客户端socket编程示例。该示例通过创建一个客户端socket连接到本地服务器,并发送HTTP请求获取响应。示例中包含了初始化连接、发送数据及接收数据等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php 
class ClientSocket {
    var $host;
    var $port;
    var $socket;
    var $errCode;
    var $errDesc;
    function __construct($host,$port) {
        $this->errCode  = 0;
        $this->errDesc   = '';
        $this->socket  = NULL;
        $this->host   = $host;
        $this->port   = $port;
        $this->init();
    }
    private function close() {
        socket_close($this->socket);
        $this->socket = NULL;
    }
    function SetErrMsg($code,$desc) {
        $this->errCode = $code;
        $this->errDesc = 'Warning:'.$desc.'<br>Message:'.socket_strerror(socket_last_error($this->socket));
    }
    function init() {
        $this->socket = @socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
        if($this->socket == NULL) {
            $this->SetErrMsg(1,'Create socket failed');
            $this->sckServer = NULL;
            return false;
        }
        $result = @socket_connect($this->socket, $this->host, $this->port);
        if($result == false) {
            $this->SetErrMsg(2,'Connect server failed');
            $this->close();
            return false;
        }
    }
    function send($sendBuf) {
        $result = @socket_write($this->socket,$sendBuf,strlen($sendBuf));
        if($result == false) {
            $this->SetErrMsg(3,'Send data failed');
            return false;
        }
        return true;
    }
    function recv(){
        $recv='';
        while($recvBuf = @socket_read($this->socket,8129)){
            $recv .= $recvBuf;
        }
        return $recv;
    }
}
$header = "GET / HTTP/1.0/r/n";
$header.= "Host: 127.0.0.1/r/n";
$header.= "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)";
$haeder.= "Accept: */*/r/n";
$header.= "Cookie: /r/n";
$header.= "Accept-Language: zh-cn,zh;/r/n";
$header.= "Connection: Close/r/n/r/n";
$client = new ClientSocket('127.0.0.1',80);
if($client->errCode!=0){
    echo $client->errDesc;
    exit;
}
$client->send($header);
$html = $client->recv();
$client->close();
echo $html;
?> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

anssummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值