Heim >Backend-Entwicklung >PHP-Tutorial >Weiterentwicklung der PHP-Technologie Forschung zur PHP-SOCKET-Technologie

Weiterentwicklung der PHP-Technologie Forschung zur PHP-SOCKET-Technologie

黄舟
黄舟Original
2016-12-16 13:26:381490Durchsuche

Heute habe ich versucht, ein Programm zu schreiben, das über einen Socket zwischen PHP und C kommuniziert. Nachdem ich das PHP-Handbuch gelesen habe, habe ich festgestellt, dass es mehrere Möglichkeiten gibt, einen Socket einzurichten Stellen Sie eine Verbindung über fsockopen() her und verwenden Sie dann fputs() zum Senden von Nachrichten und fgets() zum Empfangen von Nachrichten.

2. Stellen Sie eine Socket-Verbindung über socket_create() her, verwenden Sie dann socket_send() oder socket_write() zum Senden von Nachrichten und verwenden Sie socket_recv() oder socket_read() zum Senden von Nachrichten.

Sehr seltsam, ich habe diesen Absatz im Handbuch gesehen: „Dieses Erweiterungsmodul ist experimentell. Das Verhalten dieses Moduls, einschließlich der Namen seiner Funktionen und aller anderen Dokumentationen zu diesem Modul, kann ohne vorherige Ankündigung geändert werden. Die Situation.“ wird sich mit nachfolgenden PHP-Versionen ändern. Wir erinnern Sie daran, dieses Erweiterungsmodul auf eigenes Risiko zu verwenden. „Es scheint, dass die PHP4.0-Socket-Kommunikation noch nicht vollständig stabil ist.“

Heute muss der Client, den ich geschrieben habe, zweimal mit dem Server kommunizieren. Ich habe festgestellt, dass der PHP-Client die Nachricht nur einmal gesendet hat. Erhalten Sie dann die Antwortnachricht und schließen Sie die Verbindung. Beide Methoden können Funktionen korrekt und schnell umsetzen, allerdings gibt es offensichtliche Unterschiede bei der Kommunikation mit der ersten Methode, die ich anhand der Ausgabe des Servers erkennen kann. Bei der zweiten Kommunikation dauerte es jedoch mehrere Minuten Ich habe es mehrmals versucht und es ist immer noch nicht sicher, was mit meinem Programm schief gelaufen ist. Die zweite Methode konnte diese beiden Kommunikationen jedoch nicht durchführen ! Sehr gut gemacht.

Schließlich habe ich einen Kurs basierend auf der zweiten Situation geschrieben

Das Obige ist der Inhalt der PHP-Technologie-Forschung für fortgeschrittene PHP-SOCKET-Technologie. Weitere verwandte Artikel finden Sie unter PHP Chinesische Website (www.php.cn)!
////////////////////////////// File Description //////////////////////////////////////////
//  Class Name            : socket
//  Version               : V1.0
//  Functional Outline    : create socket,and send message to server
//  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);
  $this->socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
     $result =  socket_connect($this->socket,$address,$port);
  if($this->debug == 1){
   if ($result < 0) {
      echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "<br>";
   } else{
      echo "connect OK.<br>";
   }
  }   
 }
 function sendmsg($msg){
  socket_write($this->socket,$msg,strlen($msg));
  $result  = socket_read($this->socket,100);
  $this->response = $result;
  if($this->debug == 1){
      printf("<font color=#CCCCCC>%s $msg</fon><br>",$this->sendflag);
      printf("<font color=blue>%s $result</font><br>",$this->recvflag);
  } 
        return $result;
 }
 function close(){
  socket_close($this->socket);
 }
}


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn