Bir sokete veri yazmak ve okumak yanıt çalışılıyor.
$packet = "GET /get-database HTTP/1.1\r\n";
$packet .= "Host: 192.168.3.136:3689\r\n";
//$packet .= "Accept-Encoding: gzip\r\n";
$packet .= "Viewer-Only-Client: 1\r\n";
$packet .= "Connection: keep-alive\r\n\r\n";
socket_write($socket, $packet, strlen($packet));
do{
$buf = "";
$buf = socket_read($socket, 4096);
$data .= $buf;
}while($buf != "");
echo "$data\r\n\r\n";
I close Bağlantısını ayarlarsanız o çalışıyor ve ben yanıtı okumak mümkün değilim. Bunda sorun ben verileri okuduktan sonra, geri yuvasına yazmak gerekir olmasıdır. Yanıt Ben doğrulama için geri göndermek için gereken bir kimliği içerir. Ben iki ayrı yuva üzerinde sunucuya yazarsanız, geri doğrulama mesajı reddeder. Yani sadece ben aynı "açık bağlantı" ya da "session" yazılan gerekir ki, varsayabiliriz.
Herhangi bir düşünce?
Ben Connection: keep-alive ile soket okuyamıyor neden anlamaya istiyorum
There has been a little development on this. I'm trying to make this very simple so I can pinpoint the problem:
Şu anda benim kod şöyle görünür:
$fp = pfsockopen("192.168.3.136", "3689");
$content = "GET /login?id=a90347 HTTP/1.1\r\n";
$content .= "Connection: keep-alive\r\n\r\n";
fputs($fp, $content);
while (!feof($fp)) {
echo fgets($fp, 8192);
}
Ne olur kısa sürede benim fputs gibi, ben bu gibi görünüyor sunucudan bir yanıt başlığını almak olduğunu:
HTTP/1.1 200 OK
Date: Fri, 05 Mar 2010 22:05:47 GMT
RIPT-Server: iTunesLib/3.0.2 (Mac OS X)
Content-Type: application/x-dmap-tagged
Content-Length: 32
Ve sonra benim imleç sadece orada oturuyor. Her yerde 15 saniye ile bir dakika kadar sonra, sometimes içeriği olsun, ama ben yine de while döngüsü içinde şaşırıp.
Sonra sunucu yanıt başlığını gönderdi eğer ben içerik için hazır olduğumu bildirmek için ona geri şey gönderme olmalıdır eğer herkes, biliyor mu?
Ben ağ üzerindeki paketlerin baktığınızda, ben tüm yanıtı görebilirsiniz beri Yine, ben, bu durum olduğunu sanmıyorum. O ve ben, bazen yanıtın içeriği alabilirim aslında. PHP bu idare edemiyorlar ya da ben sadece yoldasın duyuyorum gibi gerçekten.
(: ..... Yardımcı hala ihtiyacın
Working Code$fp = pfsockopen("192.168.3.136", "3689");
$header = "GET /login?id=5648349 HTTP/1.1\r\n";
$header .= "Connection: keep-alive\r\n\r\n";
fputs($fp, $header);
$headers = array();
while(true){
$line = fgets($fp, 8192);
if($line == "\r\n"){ break; }
$line_parts = explode(': ',$line);
echo $line_parts[1]."\r\n";
$headers[$line_parts[0]] = $line_parts[1];
}
$content = fread($fp,intval($headers['Content-Length']));
echo $content;
Şimdi, ben bazı tepkiler sadece başlığından sonra bir "\ n" gönderebilir belki mümkündür eminim "\ r \ n" testi dikkatli olmak gerekir.