PHP ile soket programlama

2 Cevap php

Ben soketleriyle uzak bir web sitesine bağlanırken duyuyorum. Ben uzak siteden belirli bir dize 'XXX' bekliyorum. Dize aldıktan sonra, geri uzak sunucuda bir 'ACK 200 OK yanıtı geri göndermek istiyorum.

This is what I have so far (assume socket successfully opened); $fp is resource (pointer) to the socket:

 while (!feof($fp)) {
   $data = fgets ($fp, 1024);
   if (strcmp("PASS",$data)==0) {
 // Send 200 OK 'ack' response to remote server
     $response = "HTTP/1.0 200 OK\r\n";
 fputs ($fp, $response);

     // Do additional processing here ...
   }
 }
 fclose($fp)

Ne hakkında emin değilim bu döngü sırasında (! Feof ()) içinde fputs kullanmak için 'yasal olup olmadığıdır. Yukarıdaki kod ile yanlış bir şey varsa (daha iyi yazılmış olabilir eğer yani) birileri bunu işaret olabilir, ben minnettar olacaktır.

2 Cevap

Bu iyi görünüyor, ama aradığınız tek bir dize ise siz de en kısa sürede bunu buldum gibi okuma döngü kırılabilir.

örneğin

while (!feof($fp)) {
   $data = fgets ($fp, 1024);
   if (strcmp("PASS",$data)==0) 
      break;
 }

$response = "HTTP/1.0 200 OK\r\n";
fputs ($fp, $response);

fclose($fp);

Döngü içinde "ek işleme" daha fazla yuva tanıtıcısı okuma olacak anlamına geliyorsa, o zaman ben size bir şey geri göndermeden önce cevabında tüm okuma bitirmek zorunda söyleyebilirim.

Nasıl sizin için bitmiş işlem bu sunucunun tepkisi olduğunuzda 200 geri göndermek için gidiyoruz göstermek için bu döngü içinde bir statü ayarlama hakkında. Tüm döngü bittiğinde Sonra sonra, bir yanıtı geri fputs.

Eğer "PASS" Bulunan sırf döngü kırma olmak istemeyebilirsiniz dışında Oh, önceki cevabı aynı şeyi söylüyor.