開啟Socket學習之旅

socket(註入tcp協議)

IP地址 + 協議(TCP/UDP) + 端口 == 我們稱之為套接字

有瞭“套接字”,我們就能區分誰是誰。


這裡寫圖片描述


這裡寫圖片描述

我們要註意幾點:

1、首先我們的網要通。寬帶欠費瞭,你還想連接到外面去那是不可能的。

2、就像剛才打電話那樣。不管你是接電話的人(服務端),還是打電話的人(客戶端),你都得有個“電話機”(很多人以為隻要服務端有電話機)

3、接電話的人(服務端)可以同時接好幾個人電話

4、服務端電話機一直開機的(比如:socket需要等待客戶端連接),一旦有人打進瞭才可以接。

5、通過區號+電話號碼。這就是套接字。中轉機才能區分你到底要和哪個人通話。

6、你借到騷擾電話會怎樣?直接掛機或罵街。這就是協議在其中發揮的作用。(不要告訴我你打誰的電話都能交談甚歡)


這裡寫圖片描述

server.php

<?php

$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);  // 購買電話機
socket_bind($socket,'127.0.0.1',9090);  // 綁定電話機
socket_listen($socket,5);   // 開機

while(true){
    $client = socket_accept($socket);   // 有人打電話進來
    $buf = socket_read($client,1024);   // 一次讀取1024的長度
    echo $buf;

    socket_write($socket,'hello socket');
    socket_close($socket);  // 關掉客戶端
}

socket_close($socket);  // 關機

client.php:

<?php

$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);  // 購買電話機
socket_connect($socket,'127.0.0.1',9090);

socket_write($socket,'I am client');
$buf = socket_read($socket,1024);
echo $buf;

socket_close($socket);

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *