php socket 用戶端代碼

來源:互聯網
上載者:User

標籤:

<?phpclass SendDevAction{    //log記錄檔    private $logDevFile = "";    //日誌字串    private $logStr = "";    //用於發送接收的socket對象    private $socket;    //socket連線物件    private $connect;    //對方伺服器ip    private $host = "211.155.82.229";    //伺服器連接埠    private $port = 14527;    //接收回傳字串長度    private $getStrLength = 16384;    function __construct(){        //確定記錄檔路徑,(自訂)        $this->logDevFile = "Temp/socket_log/" . date("Y-m-d") . "Dev.log";        //建立一個socket,定義相關屬性。AF_INET 在socket中定義為常量值為2,SOCK_STREAM常量值為1,SOL_TCP值為6        $this->socket = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP );        //串連對方機器        $this->connect = socket_connect ( $this->socket, $this->host, $this->port );        //第一次握手,如果失敗則返回不再執行        $this->firstHandshake();    }        //socket第一次握手    function firstHandshake(){        //日誌寫入本次握手時間,和遠程伺服器(發送+接收)一次算一次握手        $this->logStr .= "\r\n\r\n".date("Y-m-d H:i:s")."\r\n";                //要發送的字串        $sendStr = "hello world";        //日誌寫入發送的字串        $this->logStr .= $sendStr."\r\n";        //發送字串        socket_write ( $this->socket, $sendStr, strlen ( $sendStr ) );                //接收        $getStr = socket_read ( $this->socket, $this->getStrLength );        /*        //如果接收字串過大,可迴圈多次接收直到接收完整        $getStr = "";        while(true){            $getStr .= socket_read( $this->socket,$this->getStrLength,PHP_BINARY_READ);            //根據回傳字串內容格式判斷已接收完全字串,這裡回傳字串以 }] 結尾,並且全文只包含一次 }] 字串            if(substr_count($getStr, "}]") > 0){                break;            }        }        */        //日誌寫入接收完成時間        $this->logStr .= date("Y-m-d H:i:s")."\r\n";        //日誌寫入接收字串        $this->logStr .= $getStr."\r\n\r\n";                //將日誌內容補充寫入記錄檔文本的最下面,如無記錄檔則產生新記錄檔        file_put_contents($this->logDevFile, $this->logStr,FILE_APPEND);        //關閉socket串連        socket_close ( $this->connect );        //關閉socket對象        socket_close ( $this->socket );    }}//此socket代碼只是發送訊息的用戶端,不是接收的伺服器端,伺服器端以後補充$sendDevAction = new SendDevAction();

 

php socket 用戶端代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.