比如乙個協議串,格式如下
header(2 bytes) id (1 byte) message(10 bytes)
可以這樣匹配
<>
有一些協議,頭部是接下來資料的長度,這樣就更簡單了
<>
乙個ipv4的頭部可以這樣表示
[quote]<> = packet.[/quote]
具體應用
比如定義了乙個協議,頭部2位元組為長度,接下來是body。要接收這樣乙個包,有可能會不全,也有可能2個包一起接收了,這時候可以這樣做:
[code]loop(socket, buffer) ->
recvbinary = gen_tcp:recv(socket,0),
binary = list_to_binary(binary_to_list(buffer) ++ binary_to_list(recvbinary)),
case binary of
<> ->
handlemessage(body),
loop(socket, remain);
<<_/binary>> ->
loop(socket, binary)
end.[/code]
這個解決方案還是相當笨拙的,erlang本身有更好的解決方案,這裡只是為了演示。
Erlang程式設計01
erlang程式設計簡介 erlang程式設計 由人民郵電出版社出版發行 圖靈程式設計叢書 作者 joe armstrong 喬 阿姆斯壯 譯者 趙東煒 金尹 錄入 cenzige 詳細資訊 書名原文 programming erlang software for a isbn 978 7 115 ...
Erlang程式設計11
2.4 啟動shell 現在我們正式開始。shell是乙個互動工具,我們長用他來完成與erlang的互動。啟動shell隻後,我們可以輸入表示式,然後shell就會返回這些表示式的值。如果你已經安裝好了erlang,那麼erlang shell erl也就同時安裝好了。要執行他,請開啟乙個傳統的作業...
《Erlang程式設計》 筆記
語法 1.模式匹配 表示乙個模式匹配操作。lhs rhs實際上是這樣乙個過程,對右端求值 rhs 然後將結果與左端 lhs 進行模式匹配。2.分號 逗號 用來分隔函式呼叫,資料構造器以及模式中的引數。句號 後跟乙個空白符號 用來在shell中分隔完整的函式和表示式。分號 用來分隔字句。如分段的函式定...