簡單tcp伺服器**:
順序伺服器:-module(my_socket_server).
-export([start/0,loop/1]).
start() ->
= gen_tcp:listen(2345, [binary, ,%自定義打包規則,生成乙個監聽2345埠的socket
,]),
= gen_tcp:accept(listen),%生存乙個新的socket
gen_tcp:close(listen),%把該監聽關閉,不再生成新的socket
loop(socket).
loop(socket) ->
receive
->
io:format("server received binary = ~p~n",[bin]),
str = binary_to_term(bin),%解碼
io:format("server (unpacked) ~p~n",[str]),
reply = lib_misc:string2value(str),
io:format('server replying = ~p~n',[reply]),
gen_tcp:send(socket, term_to_binary(reply)),%編碼
loop(socket);
->
io:format("server socket close~n")
end.
並行伺服器:-module(my_socket_server2).
-compile(export_all).
start() ->
= gen_tcp:listen(2345, [binary, ,%自定義打包規則,生成乙個監聽2345埠的socket
,]),
seq_loop(listen).
seq_loop(listen) ->
= gen_tcp:accept(listen),
loop(socket),
seq_loop(listen).
loop(socket) ->
receive
->
io:format("server received binary = ~p~n",[bin]),
str = binary_to_term(bin),%解碼
io:format("server (unpacked) ~p~n",[str]),
reply = lib_misc:string2value(str),
io:format('server replying = ~p~n',[reply]),
gen_tcp:send(socket, term_to_binary(reply)),%編碼
loop(socket);
->
io:format("server socket close~n")
end.
客戶端:-module(my_socket_server3).
-compile(export_all).
start() ->
= gen_tcp:listen(2345, [binary, ,%自定義打包規則,生成乙個監聽2345埠的socket
,]),
spawn(fun() -> par_connect(listen) end).
par_connect(listen) ->
= gen_tcp:accept(listen),
spawn(fun() -> par_connect(listen) end),
loop(socket).
loop(socket) ->
receive
->
io:format("server received binary = ~p~n",[bin]),
str = binary_to_term(bin),%解碼
io:format("server (unpacked) ~p~n",[str]),
reply = lib_misc:string2value(str),
io:format('server replying = ~p~n',[reply]),
gen_tcp:send(socket, term_to_binary(reply)),%編碼
loop(socket);
->
io:format("server socket close~n")
end.
-module(my_socket_client).
-compile(export_all).
start(str) ->
= gen_tcp:connect('localhost', 2345,
[binary, ]),
ok = gen_tcp:send(socket, term_to_binary(str)),
receive
->
io:format("client receive binary = ~p~n",[bin]),
val = binary_to_term(bin),
io:format("client result = ~p~n",[val]),
gen_tcp:close(socket)
end.
-module(lib_misc).
-export([string2value/1]).
string2value(l) -> string2value(l, ).
string2value(, n) -> list_to_tuple(lists:reverse(n));
string2value([h|t], n) -> string2value(t, [h|n]).
Erlang 建立乙個簡單的TCP伺服器
一 建立 tcpserver.erl module tcpserver export start 0 start 建立乙個埠2345用於監聽來自客戶端的請求,是資訊表頭用4位元組表示長度,需要與客戶端一致 gen tcp listen 2345,binary,開始接受乙個請求 gen tcp acc...
erlang 自己搞定乙個簡單的MakeFile
在windows下面執行erlang的檔案 就是.beam檔案 每次都要從cmd,cd到你編譯好erlang檔案的目錄下就是有 beam 的目錄下,這樣超級麻煩。有沒有什麼辦法,在cmd中,輸入erl,直接就直接可以執行 不用再cd到你的.beam的資料夾下 你已經編譯好的的.beam檔案。首先要修...
EPICS之乙個簡單的裝置支援程式
最近看epics的開發手冊,因為手冊中是分模組介紹的,所以看了一段時間還是寫不出程式來,昨天去讓師兄給我以具體的裝置支援的例子講述了下 因為我們室主要用到的還是裝置支援 下面是構建裝置支援程式的步驟,類似於乙個hello world程式,給同樣在入門道路上的朋友乙個參考。1.像ai bi等這些型別的...