【Socket API】實現一個簡單的HTTP客戶端調用

//首先創建一個Socket句柄
if (!($sock = socket_create(AF_INET, SOCK_STREAM, 0))) {
	echo socket_last_error();
	exit;
}

echo "創建Socket句柄 \n";

//連接到服務器的某個對接端口
if(!socket_connect($sock, 'wwww.example.com', 80)) {
	echo socket_last_error();
	exit;
}

echo "連接服務器 \n"//發送一個簡單的http信息
$message = "GET /index.html HTTP/1.1 \r\n\r\n";

//發送數據至服務器
if (!socket_send($sock, $message, strlen($message), 0)) {
	echo socket_last_error();
	exit;
}

echo "請求發送成功 \n";

//接受客戶端的響應
if(socket_recv($sock, $buf, 1024, MSG_WAITALL) === false) {
	echo socket_last_error();
	exit;
}

//輸出服務器響應
echo $buf;

基本操作總結:

  1. 創建一個Socket句柄;
  2. 連接到服務器的接口;
  3. 發送HTTP消息;
  4. 發送數據到服務器;
  5. 接受到客戶端的響應信息;
  6. 輸出服務器的響應;

PHP開發者在編寫HTTP應用的時候,一般使用的是curl擴展,curl擴展和PHP Socket包的區別在於curl擴展做了更多的抽象,完全的忽略了網絡的存在,而PHP Socket包和底層的Socket API更加類似,靈活度更加強大,當然,對於TCP/IP的本質更加接近。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章