Erlangを使った通信をまたやってみたくなり、もう一度復習する意味で、以前 _bitlifeブログで書いた「ErlangでTCPプログラム」http://bitlife.me/archives/231 を、WidnowsからLinux環境にうつして、順を追って実行してみました。
環境:Ubuntu14.04
apt-get install erlang-dev
でErlangをインストール。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
-module(socket_test). -compile(export_all). -import(lists, [reverse/1]). start_client(Str) -> {ok, Socket} = gen_tcp:connect("localhost", 1234, [binary, {packet, 4}]), ok = gen_tcp:send(Socket, Str), receive {tcp,Socket,Bin} -> io:format("Client received = ~p~n",[Bin]), gen_tcp:close(Socket) end. start_server() -> {ok, Listen} = gen_tcp:listen(1234, [binary, {packet, 4}, {reuseaddr, true}, {active, true}]), {ok, Socket} = gen_tcp:accept(Listen), gen_tcp:close(Listen), loop(Socket). loop(Socket) -> receive {tcp, Socket, Str} -> io:format("Server received = ~p~n",[Str]), gen_tcp:send(Socket, [Str]), loop(Socket); {tcp_closed, Socket} -> io:format("Server socket closed~n") end. |
①ファイル確認
②Erlang Shell実行してコンパイル
③コンパイル後ファイル確認
④サーバ実行メッセージ待ち受け
⑤Erlang Shell実行してクライアント実行メッセージ送信
⑥サーバ実行メッセージ待ち受け
⑦クライアント実行メッセージ送信
Shellというくらいだから、cd(“/tmp”), ls(). といった具合にチェンジディレクトリやファイルリストも表示できます。(). と書くところに特徴があります。
また掘り下げていきたいです。