4
這是關於如何處理從網絡套接字接收的前綴消息的follow-up question。我嘗試做的是:具有前導長度值的處理套接字數據
- 閱讀前4個字節(這是$前綴,表示消息的長度)
- 檢查$前綴有真正的4個字節的大小,如果它是一個整數
- 使用從$前綴
- 檢查長度閱讀完整的$消息,如果消息具有$真正大小前綴字節
到目前爲止,我的代碼如下兩行:
$prefix = socket_read($socket, 4, PHP_BINARY_READ); //No 1.
//No 2: how to do the checks?
$message = socket_read($socket, $prefix, PHP_BINARY_READ); //No 3.
//No 4: how to do the checks?
我該如何做上述檢查?
一個小側面說明:通過網絡套接字連接發送的所有數據是UTF8,小尾數
感謝您的幫助,真的很感激。要檢查$前綴是否是一個整數,我必須檢查$ length(is_int($ length))中的解壓值,是否正確? – Mike 2012-03-18 20:14:25
@Mike:如果'$ prefix'不是指定的格式(在上面的例子中是一個32位有符號長符,'l'),'unpack'將返回'false'。如果解壓縮返回「false」以外的任何內容,則不必檢查「is_int」。 – netcoder 2012-03-19 02:05:01
謝謝,作品完美! – Mike 2012-03-24 00:18:27