php簡單的socket_PHP教程

來源:互聯網
上載者:User

php簡單的socket


本篇文章分享一個簡單的socket樣本,用php。實現一個接收輸入字串,處理並返回這個字串到用戶端的TCP服務。

產生一個 socket 服務端

提示:你應該使用你的命令提示字元來運行上面這段代碼。理由是因為這裡將產生一個伺服器,而不是一個Web頁面。如果你嘗試使用Web瀏覽器來運行這個指令碼,那麼很有可能它會超過30秒的限時。你可以使用下面的代碼來設定一個無限的已耗用時間,但是還是建議使用命令提示字元來運行。

set_time_limit(0);

在你的命令提示字元中對這個指令碼進行簡單測試:

Php.exe socket_server.php

如果你沒有在系統的環境變數中設定php解譯器的路徑,那麼你將需要給php.exe指定詳細的路徑。當你運行這個伺服器端的時候,你能夠通過遠程登陸(telnet)的方式串連到連接埠1234來測試這個伺服器。

上面的伺服器端有三個問題:

1. 它不能接受多個串連。

2. 它只完成唯一的一個命令。

3. 你不能通過Web瀏覽器串連這個伺服器。

這個第一個問題比較容易解決,你可以使用一個應用程式去每次都串連到伺服器。但是後面的問題是你需要使用一個Web頁面去串連這個伺服器,這個比較困難。你可以讓你的伺服器接受串連,然後些資料到用戶端(如果它一定要寫的話),關閉串連並且等待下一個串連。

在上一個代碼的基礎上再改進,產生下面的代碼來做你的新伺服器端:

這個伺服器端要做什麼呢?它初始化一個socket並且開啟一個緩衝收發資料。它等待串連,一旦產生一個串連,它將列印"Socket connected"在伺服器端的螢幕上。這個伺服器檢查緩衝區,如果緩衝區裡有資料,它將把資料發送到串連過來的電腦。然後它發送這個資料的接受資訊,一旦它接受了資訊,就把資訊儲存到資料裡,並且讓串連的電腦知道這些資訊,最後關閉串連。當串連關閉後,伺服器又開始處理下一次串連。

產生一個 socket 用戶端

處理第二個問題是很容易的。你需要產生一個php頁串連一個socket,發送一些資料進它的緩衝並處理它。然後你有個處理後的資料在還頓,你能夠發送你的資料到伺服器。在另外一台用戶端串連,它將處理那些資料。

下面的例子示範了使用socket:

NO DATA

");break;}else{// Do something with the data in the bufferecho("

Buffer Data: " . $buffer . "

");}}echo("

Writing to Socket

");// Write some test data to our socketif(!socket_write($socket, "SOME DATA\r\n")){echo("

Write failed

");}// Read any response from the socket phpernote.comwhile($buffer = socket_read($socket, 1024, PHP_NORMAL_READ)){echo("

Data sent was: SOME DATA
Response was:" . $buffer . "

");}echo("

Done Reading from Socket

");

這個例子的代碼示範了用戶端串連到伺服器。用戶端讀取資料。如果這是第一時間到達這個迴圈的首次串連,這個伺服器將發送"NO DATA"返回給用戶端。如果情況發生了,這個用戶端在串連之上。用戶端發送它的資料到伺服器,資料發送給伺服器,用戶端等待響應。一旦接受到響應,那麼它將把響應寫到螢幕上。

您可能感興趣的文章

  • php在數組中尋找某個值是否存在(in_array(),array_search(),array_key_exists())
  • php通過socket擷取網頁內容的簡單樣本
  • PHP實現MVC開發得最簡單的方法,模型的思考
  • php打造屬於自己的MVC架構簡單案例,提供思路,僅供參考
  • php 簡單計算權重的方法(適合抽獎類的應用)
  • PHP的Try, throw 和 catch簡單用法
  • PHP將簡體漢字轉為繁體的方法
  • php使用curl實現get和post請求的方法

http://www.bkjia.com/PHPjc/1005593.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1005593.htmlTechArticlephp簡單的socket 本篇文章分享一個簡單的socket樣本,用php。實現一個接收輸入字串,處理並返回這個字串到用戶端的TCP服務。 產生一個...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.