Ok, Bu yüzden bir şekilde bu paketi bir şekilde daha güzel bir formata dönüştürdüğümü biliyorum, fakat dürüstçe nasıl ve ne yapacağımı bilmiyorum. Anlamak kolay bir açıklama bulmak, temelde socket_connect kullanarak bağlanıyorum, hepsi iyi ve zeki. Göndermeye çalıştığım paketi simüle etmek için paket paketleyici kullandım ve temel olarak kopyalayıp yapıştırdım. Bu kod, temelde socket_read'e ulaştığında donuyor, çünkü sunucu gönderdiğim veriyi kaydetmiyor, dolayısıyla hiçbir şey geri göndermiyor. Çizgiler boyunca "pack()" PHP işlevini kullanmam gerektiğini düşünüyorum, ancak belgeler benim için hiçbir anlam ifade etmiyor ve bu noktada kayboldum.Bu paketin PHP'de sunucuya nasıl doğru bir şekilde gönderileceğini öğrenmek için socket_write
İşte ben kod:
// this is the packet I want to send
$data =
'ff 50 3a 00 00 00 00 00 36 38 58 49 50 58 32 44 .P:..... 68XIPX2D
0c 00 00 00 53 55 6e 65 55 b4 4a c9 88 ff ff ff ....SUne U.J.....
09 04 00 00 09 04 00 00 55 53 41 00 55 6e 69 74 ........ USA.Unit
65 64 20 53 74 61 74 65 73 00 ed State s.';
// i try writing it to the server, and it doesn't throw any error for me so seems to send it fine
socket_write($socket, $data, strlen($data));
// then the server says nothing back, so it seems to just sit idle at this part
print(socket_read($socket, 2048));
Herhangi bir yardım çok takdir, teşekkürler!
Paket dinleyiciniz, aynı verileri 2 biçimde sunar: Onaltılı ve Dize. Sol kısım hexa, sağdaki String. Her bir hexa satırı için, önde ilgili String formatı vardır. Yani, 'verilerinizde', paketleriniz çoğaltılır VE karıştırılır. Bu verilerin ne olduğunu bilmeden, paket sniffer'ınızın çıktısını kopyalayamaz/yapıştıramazsınız (yani, hexa veya string parçasının hangi elemanlarına ihtiyacınız olduğunu). – jhamon
Örneğimde, 4 satırlık veri var, bunun anlamı şu şekilde gönderebilirim: '$ data = 'ff503a00000000003638584950583244'. '0c00000053556e6555b44ac988ffffff'. '090400000904000055534100556e6974'. '65642053746174657300'; $ binary = hex2bin ($ data); socket_write ($ soket, $ binary, strlen ($ data)); ? –
Anlamakta zorlandıklarım, sunucunun her zaman ikili bekleyip beklememesi ya da sunucu her zaman onaltılık bir süre beklemesidir. Ve her iki durumda da, PHP'de sunucuya gönderilen çok satırlı hex'in hiçbir örneğini bulamıyorum, bu her zaman bazı kısa tek satırlık hex'tir, bir kerede çok sayıda satır göndermem gerekiyor. –