Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -module(tcp_bridge).
- -export([start/3]).
- start(IP, Port, LocalPort) ->
- {ok, ListenSocket} = gen_tcp:listen( LocalPort, [list, inet, {packet, raw}] ),
- spawn( fun() -> listen_loop(ListenSocket, IP, Port) end ).
- listen_loop(ListenSocket, IP, Port) ->
- {ok, LocalSocket} = gen_tcp:accept(ListenSocket),
- {ok, RemoteSocket} = gen_tcp:connect(IP, Port, [list, inet, {packet, raw}], 3000),
- bridge(LocalSocket, RemoteSocket),
- bridge(RemoteSocket, LocalSocket),
- listen_loop(ListenSocket, IP, Port).
- bridge(RecvSocket, SendSocket) ->
- Receiver = spawn(fun() -> reciever(RecvSocket, SendSocket) end),
- gen_tcp:controlling_process(RecvSocket, Receiver),
- Receiver.
- reciever(RecvSocket, SendSocket) ->
- receive
- {tcp, _Socket, Data} ->
- gen_tcp:send(SendSocket, Data),
- reciever(RecvSocket, SendSocket);
- {tcp_closed, _Socket} ->
- gen_tcp:close(SendSocket);
- die ->
- gen_tcp:close(SendSocket);
- _ ->
- void
- end.
Add Comment
Please, Sign In to add comment