我想發送一個原始的http數據包到網絡服務器,並收到它的迴應,但我無法找到一種方法來做到這一點。即時通訊與套接字和每一個我找到使用套接字發送udp數據包的鏈接。任何幫助都會很棒。PHP如何發送原始HTTP數據包
回答
看看從fsockopen
manual page這個簡單的例子:
<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET/HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>
到服務器的連接建立與fsockpen
。 $out
保存與frwite
一起發送的HTTP請求。然後用fgets
讀取HTTP響應。
它正是我所需要的,我想我需要重新思考我的包欺騙壽的方法:S – Ozzy 2009-09-22 23:18:39
如果你想要做的就是執行GET請求和接收響應的主體,大部分文件功能支持使用網址:
<?php
$html = file_get_contents('http://google.com');
?>
<?php
$fh = fopen('http://google.com', 'r');
while (!feof($fh)) {
$html .= fread($fh);
}
fclose($fh);
?>
在超過簡單的GET,使用捲曲(你有把它編譯成php)。通過捲曲,您可以執行POST和HEAD請求,並設置各種標題。
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://google.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
?>
任何這將被稱爲包裝實施... Ozzy正在尋找對於* raw * http。但是說了這個......關於http沒有任何原始的東西......取決於它從哪個角度看待它! – 2011-01-13 02:35:34
cURL比實現客戶端HTTP更容易。你所要做的就是設置一些選項,cURL處理其餘的部分。
$curl = curl_init($URL);
curl_setopt_array($curl,
array(
CURLOPT_USERAGENT => 'Mozilla/5.0 (PLAYSTATION 3; 2.00)',
CURLOPT_HTTPAUTH => CURLAUTH_ANY,
CURLOPT_USERPWD => 'User:Password',
CURLOPT_RETURNTRANSFER => True,
CURLOPT_FOLLOWLOCATION => True
// set CURLOPT_HEADER to True if you want headers in the result.
)
);
$result = curl_exec($curl);
如果您需要設置捲曲不支持標題,可以使用CURLOPT_HTTPHEADER選項,通過附加頭陣列。如果您需要解析標題,請將CURLOPT_HEADERFUNCTION設置爲回調。請閱讀curl_setopt
的文檔以獲取更多選項。
- 1. PHP發送原始數據包
- 2. 如何發送原始數據包
- 3. 如何發送原始http頭
- 4. 如何發送原始數據到API
- 5. SBApplication:如何發送原始數據
- 6. 發送原始HTTP請求
- 7. 如何將wireshark數據包重新發送到原始文件?
- 8. 如何用C#發送原始以太網數據包?
- 9. 如何使用cURL發送原始POST數據? (PHP)
- 10. 發送原始發佈數據
- 11. 如何使用python發送原始發佈數據?
- 12. 在python請求發送原始數據
- 13. 用原始數據發送Angular2表格
- 14. 發送XML原始數據總是空
- 15. Java HTTP Post原始數據
- 16. 如何使用PHP/apache訪問原始HTTP請求數據?
- 17. 原始套接字不發送報文包含任意數據
- 18. 簡單的原始數據包捕捉和發送程序
- 19. 使用pcapdotnet發送原始以太網數據包
- 20. 如何通過代理髮送Java中的原始http請求
- 21. 如何在java中的unix套接字上發送原始數據包
- 22. 如何獲取從TcpClient類發送和接收的原始數據包?
- 23. 如何通過UDP通過RTP發送aac原始數據?
- 24. 如何讀取發送到端口的原始數據(python)
- 25. 如何使用socket.io發送原始數據
- 26. 如何使用Java將原始數據發送到打印機
- 27. 如何使用boost :: asio發送原始二進制數據
- 28. 如何將Android設備的原始數據發送到主機?
- 29. PHP HTTP頭髮送POST數據
- 30. $ http不發送數據到php
@Ozzy:note - HTTP使用TCP(流)而不是UDP(數據包)。 – 2009-09-22 23:14:27
aa我看到thx :) – Ozzy 2009-09-22 23:19:11
你爲什麼要實現HTTP?有一個很好的機會cURL會做你想做的,所以你不必重新發明輪子。 – outis 2009-09-22 23:21:46