php Socket 編程詳細介紹

來源:互聯網
上載者:User
PHP 使用Berkley的socket庫來建立它的串連。你可以知道socket只不過是一個資料結構。你使用這個socket資料結構去開始一個用戶端和伺服器之間的會話。這個伺服器是一直在監聽準備產生一個新的會話。當一個用戶端串連伺服器,它就開啟伺服器進行中監聽的一個連接埠進行會話。這時,伺服器端接受用戶端的串連請求,那麼就進行一次迴圈。現在這個用戶端就能夠發送資訊到伺服器,伺服器也能發送資訊給用戶端。
產生一個Socket,你需要三個變數:一個協議、一個socket類型和一個公用協議類型。產生一個socket有三種協議供選擇,繼續看下面的內容來擷取詳細的協議內容。
定義一個公用的協議類型是進行串連一個必不可少的元素

下面讓我們以一個簡單的例子開始---一個接收輸入字串,處理並返回這個字串到用戶端的TCP服務.代碼如下:

<?php// 設定一些基本的變數 $host = "192.168.1.99"; $port = 1234; // 設定逾時時間 set_time_limit(0); // 建立一個Socket $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n"); //綁定Socket到連接埠 $result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n"); // 開始監聽連結 $result = socket_listen($socket, 3) or die("Could not set up socket listener\n"); // accept incoming connections // 另一個Socket來處理通訊 $spawn = socket_accept($socket) or die("Could not accept incoming connection\n"); // 獲得用戶端的輸入 $input = socket_read($spawn, 1024) or die("Could not read input\n"); // 清空輸入字串 $input = trim($input); //處理用戶端輸入並返回結果 $output = strrev($input) . "\n"; socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n"); // 關閉sockets socket_close($spawn); socket_close($socket); ?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.