首頁 >後端開發 >php教程 >PHP SOCKET 技術研究_PHP教程

PHP SOCKET 技術研究_PHP教程

WBOY
WBOY原創
2016-07-21 16:11:51958瀏覽

    今天試著寫一個PHP 與C 語言透過socket通訊的程序,看過PHP手冊,發現有好幾種方式可以建立socket 客戶端.

1、透過fsockopen() 建立socket連接,然後用用fputs() 發送訊息,用fgets() 接收訊息。

2、透過 socket_create() 建立 socket 連接,然後用 socket_send() or socket_write() 傳送訊息,用 socket_recv() 或 socket_read() 傳送訊息。

    很奇怪,我在手冊上看到了這樣一段話"本擴展模組是實驗性的。該模組的行為,包括其函數的名稱以及其它任何關於此模組的文檔可能會在沒有通知的情況下隨PHP 以後的發布而改變。

今天我寫的客戶端要與服務端做兩次通訊,我用上面這個方法都寫了一個客戶端程序,發現當僅僅就一次通訊的時候,也就是PHP客戶端發送一次訊息,然後接收回傳訊息,就關閉連線。這兩種方法都能正確快速的實現功能,但當做兩次通訊時,卻有明顯的差別,第一種方法第一次通訊特別快就結束了,這個我可以透過服務端的輸出看出來,但是第二次通訊要等上好幾分鐘才能結束,我試了好幾次都這樣,我不太清楚我的程式哪裡出錯了,還是這個方式連接就是有問題,但是第二種方法做這兩次通訊卻很快,正確!完成的非常的。

最後我寫了一個class

/////////////////////////// /// File Description //////////////////////////////////////////
//  Class Name            : socket
//  Version              
//  Revision history      : 2004/12/15 First version created
//  Current               : 2004/12/15 Liu Yongsheng
//////////////////////////////////// ////////////////////////////////////////////////// /////
class socket{
 var $socket; //socket 帳號
 var $sendflag = ">>>";
 var $recvflag = " var $response;
 var $debug = 1;
 function socket($hostname,$port){
  $address = gethostbyname($hostname);
  $->socket_this->socket = sock AF_INET,SOCK_STREAM,SOL_TCP);
     $result =  socket_connect($this->socket,$address,$port);
  if($this->de == 1){ 是🠎       echo "socket_connect() 無> >";
   }
  }  
 }
 function sendmsg($msg){
  socket_write($this->socket,$msg,strlen($msg); result  = socket_read($this->socket,100);
  $this->response = $result;
  if($this->debug == 1){    if($this->debug == 1){      #CCCCCC>%s $msg
",$this->sendflag);
      printf("%s $result
",$this ->recvflag);
  }
        return $result;
 }
 function close(){
 } }




http://www.bkjia.com/PHPjc/313850.html

www.bkjia.com

true

http: //www.bkjia.com/PHPjc/313850.html

TechArticle今天試著寫一個PHP 與C 語言通過socket通訊的程序,看過PHP手冊,發現有好幾種方式可以建立socket 客戶端.1、透過fsockopen() 建立socket連接,...
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn