用php模擬做服務端偵聽埠

2021-09-08 03:57:18 字數 1151 閱讀 4878

參考:

socket_accept()是服務端接受客戶端請求,一旦有乙個客戶端鏈結上來的話,則這個函式會返回乙個新的socket資源,這個資源是與客戶端通訊的資源。

socket_accept()是阻塞的,會一直卡在那裡。

正常的伺服器,應該是新開乙個子程序來處理請求。

socket_connect()是鏈結乙個socket去。是客戶端使用的。

c語言的介紹:connect, send, recv都是同步阻塞工作模式。

那麼,可以得出結論,socket_connect()也是阻塞性的。

php中使用協程:

有什麼區別呢?

總結

如果沒有安裝socket擴充套件,則使用如下相關函式:stream_socket_client、fread()、fwrite()、stream_select()、fclose()

如果安裝了sokcet擴充套件,則可以替換掉擴充套件的函式:

stream_socket_client等價於socket_create()

socket_select()等價於stream_select()

socket_close()等價於fclose()

socket_write()等價於fwrite()

socket_read()等價於fread()

stream_socket_client()實際上是在呼叫linux系統的 connect()函式。

socket_select()、stream_select()都是在呼叫作業系統提供的select()函式。

思考:stream和socket本質有什麼區別呢?

不知道,想著去去思考socket_accept和socket_listen()區別,也許就能找到答案了。

我總把socket_accept和socket_listen()進行混淆了。

socket_accept是開始接受客戶端的鏈結,如果有客戶端鏈結上來,這個函式會返回乙個socket通道的控制代碼,這個控制代碼是專門與客戶端單獨的控制代碼。socket_listen是開始偵聽這個socket通道,只是偵聽,並不是接受客戶端的連線請求。

完成埠模型服務端

windows 完成埠模型服務端 include include pragma comment lib,ws2 32.lib using namespace std const int serverport 4399 const int msgsize 1024 typedef enum opera...

安卓APP做殼 PHP做服務端 開發APP

客戶端呼叫介面api,服務端處理邏輯返回 結果json,客戶端接收結果作互動處理。做過 api 的人應該了解,其實開發 api 比開發 web 更簡潔,但可能邏輯更複雜,因為 api 其實就是資料輸出,不用呈現頁面,所以也就不存在 mvc api 只有 m 和 c 1 和 web 開發一樣,首先需要...

用IO完成埠實現管道非同步服務端

windows程式設計中,如果涉及到本地兩個程序之間的通訊,最好的方式就是管道,管道支援同步和非同步兩種模式,作為服務端,當然用非同步好,本文章直接提供用io完成埠實現管道服務端的 include stdafx.h include lptstr lpszpipename text pipe pipe...