Erlang網路程式設計 Binary

2021-08-22 07:39:47 字數 660 閱讀 4081

比如乙個協議串,格式如下

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中分隔完整的函式和表示式。分號 用來分隔字句。如分段的函式定...