| |
|
function
căn bản để mở kết nối đến server là fsocken(). Có thể bạn sẽ thấy ngạc
nhiên tại sao bạn lại muốn kết nối đến server khác. Nếu bạn cần thêm
thông tin về 3rd party server thì sockets là cái cho bạn cần. Code:
<?php /* Tham số mà fsockopen cần là: fsockopen(IP/Hostname, cổng (port), Lỗi ($errno), miêu tả lỗi phát hiện($errdesc) */ $fp = fsockopen( "www.phpvn.org", 80, $errno, $errdesc); ?> Bạn đã thiết lập một kết nối đến server vd: phpvn.org. Bạn cũng nên làm quen với function fclose() để ngắt nối mạng. <?php $fp = fsockopen( "www.phpvn.org", 80, $errno, $errdesc); //establish connection fclose($fp); //close connection ?> Gởi một Request Trong phần kế tiếp này bạn sẽ làm quen với cách gởi một request đến server và cho thể hiện một danh sách mà server gởi trả lại cho bạn cũng như cách làm việc của nó. Việc trước tiên cần làm là mở một kết nối đến server với một tên biến $fp, có nghĩa bạn đã gởi một $fp và nhận được một kết quả trả về từ server mà bạn đã gởi đến. Code:
<?php /* Kết nối đến server vd: www. example.com */ $host = "www.example.com"; $page = "/index.html"; $fp = fsockopen($host, 80, $errno, $errdesc) or die("Connection to $host failed"); /* Chúng ta xác định thông tin của header để gởi đến cho server GET, được hiểu chúng ta muốn nhận được thông tin hay trang web từ server đó Bạn cũng có thể sử dụng POST để làm việc này. */ $request = "GET $page HTTP/1.0&#92;r&#92;n"; $request .= "Host: $host&#92;r&#92;n"; $request .= "Referer: $host&#92;r&#92;n"; /* Sử dụng function fput() gởi đòi hỏi(request) đến server và tạo một vòng lập (loop) lấy kết quả được từ mãng, được gọi là $page */ fputs($fp, $request); while(!feof($fp)){ $page[] = fgets($fp, 1024); } /* Đóng mạng đồng thời lấy tổng số trang nhận được */ fclose($fp); echo "The server returned ".(count($page)). " Lines"; /* Tạo vòng lập (for) và in dữ liệu. */ for($i=0; $i<count($page); $i++){ echo $page[$i]; } ?> Tìm kiếm (Searching for a page) Trong phần này chúng ta sử dụng fsockenopen() để kể nối đến nhiều server và kiểm soát một trang nào đó trong server. Code:
<?php $servers = array( "www.example.com" => "/index.html", "www.example2.com" => "/index.php" ); /* Tạo vòng lập cho server array và kết nối đên mạng, Báo lỗi nếu không kết nối được */ foreach($servers as $host=> $page){ $fp = fsockopen($host,80,$errno,$errdesc,10); echo "Trying $host<br>&#92;n"; if(!$fp){ echo("couldnt connect to $host"); echo "<br><hr><br>&#92;n"; continue; } /* Xác định thông tin, và gởi request đến server */ echo "trying to get $page<br>&#92;n"; $request = "HEAD $page HTTP/1.0&#92;r&#92;n&#92;r&#92;n"; fputs($fp, $request); echo fgets($fp, 1024); echo "<br><br><br>&#92;n"; /* Đóng mạng */ fclose($fp); } ?> Dòng code trên được diễn như sau: Trying: www.example.com Trying to get: /index.html HTTP/1.1 200 OK Nó chỉ hiện những trang đã tìm được, nếu không sẽ thay thế trang 404 bằng mã số 200. ứng dụng Whois Bạn đã biết qua ứng dụng kết nối đến một server, tạo vòng lập để in kết quả và cách đóng mạng. chúng ta thực hành thêm một vài thao tác cho ứng dụng whois. Code: |
Sockets là một cách thức dùng trong PHP để kết nối với một server khác qua mạng hay internet.