| | |
| | | -author("bin.shen"). |
| | | |
| | | %% API |
| | | -export([doWork/2]). |
| | | -import(tcp_server, [loop/2]). |
| | | -export([doWork/3]). |
| | | -import(tcp_server, [loop/3]). |
| | | |
| | | doWork(Socket, Data) -> |
| | | doWork(Socket, Data, Count) -> |
| | | |
| | | TotalLen = byte_size(Data), |
| | | io:format("count ~p~n", [TotalLen]), |
| | | %% io:format("count ~p~n", [TotalLen]), |
| | | |
| | | if |
| | | TotalLen < 12 -> |
| | | loop(Socket, Data); |
| | | loop(Socket, Data, Count); |
| | | |
| | | true -> |
| | | <<Head:6/binary, Rest/binary>> = Data, |
| | |
| | | <<90, 0, 16, 1, 0, 1>> -> |
| | | if |
| | | Len =:= 6 -> |
| | | <<D1, D2, D3, D4, D5, D6>> = Rest, |
| | | io:format("~p~n", [<<90, 0, 16, 1, 0, 1, D1, D2, D3, D4, D5, D6>>]), |
| | | loop(Socket, <<>>); |
| | | %% <<D1, D2, D3, D4, D5, D6>> = Rest, |
| | | %% io:format("~p~n", [<<90, 0, 16, 1, 0, 1, D1, D2, D3, D4, D5, D6>>]), |
| | | loop(Socket, <<>>, Count+1); |
| | | |
| | | Len > 6 -> |
| | | <<A:6/binary, B/binary>> = Rest, |
| | | <<D1, D2, D3, D4, D5, D6>> = A, |
| | | io:format("~p~n", [<<90, 0, 16, 1, 0, 1, D1, D2, D3, D4, D5, D6>>]), |
| | | doWork(Socket, B); |
| | | <<_:6/binary, B/binary>> = Rest, |
| | | %% <<D1, D2, D3, D4, D5, D6>> = A, |
| | | %% io:format("~p~n", [<<90, 0, 16, 1, 0, 1, D1, D2, D3, D4, D5, D6>>]), |
| | | doWork(Socket, B, Count+1); |
| | | |
| | | true -> |
| | | loop(Socket, Data) |
| | | loop(Socket, Data, Count) |
| | | end; |
| | | |
| | | <<90, 0, 16, 1, 0, 2>> -> |
| | |
| | | -author('Bin Shen <23420800@qq.com>'). |
| | | -compile(export_all). |
| | | |
| | | -export([listen/1, loop/2]). |
| | | -import(handler,[doWork/2]). |
| | | -export([listen/1, loop/3]). |
| | | -import(handler,[doWork/3]). |
| | | |
| | | -define(TCP_OPTIONS, [binary, {packet, 0}, {active, false}, {reuseaddr, true}]). |
| | | |
| | |
| | | % Wait for incoming connections and spawn the echo loop when we get one. |
| | | accept(LSocket) -> |
| | | {ok, Socket} = gen_tcp:accept(LSocket), |
| | | spawn(fun() -> loop(Socket, <<>>) end), |
| | | spawn(fun() -> loop(Socket, <<>>, 0) end), |
| | | accept(LSocket). |
| | | |
| | | % Echo back whatever data we receive on Socket. |
| | | loop(Socket, Chain) -> |
| | | loop(Socket, Chain, Count) -> |
| | | |
| | | %% io:format("~p~n", [Chain]), |
| | | io:format("~p~n", [Count]), |
| | | |
| | | case gen_tcp:recv(Socket, 0) of |
| | | |
| | |
| | | %% loop(Socket); |
| | | |
| | | {ok, Data} -> |
| | | % io:format("recv ~p~n", [Data]), |
| | | % gen_tcp:send(Socket, Data), |
| | | %% io:format("recv ~p~n", [Data]), |
| | | %% gen_tcp:send(Socket, Data), |
| | | |
| | | %% io:format("recv ~p~n", [Data]), |
| | | %% |
| | |
| | | %% Y = [ integer_to_list(N, 16) || N <- X], |
| | | %% io:format("recv ~w~n", [Y]), |
| | | |
| | | L1 = byte_size(Chain), |
| | | L2 = byte_size(Data), |
| | | doWork(Socket, <<Chain:L1/binary, Data:L2/binary >>); |
| | | ChainLen = byte_size(Chain), |
| | | DataLen = byte_size(Data), |
| | | doWork(Socket, <<Chain:ChainLen/binary, Data:DataLen/binary >>, Count); |
| | | |
| | | %% loop(Socket); |
| | | {error, closed} -> |