Guest User

Untitled

a guest
Feb 19th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. -module(tcp_bridge).
  2. -export([start/3]).
  3.  
  4. start(IP, Port, LocalPort) ->
  5. {ok, ListenSocket} = gen_tcp:listen( LocalPort, [list, inet, {packet, raw}] ),
  6. spawn( fun() -> listen_loop(ListenSocket, IP, Port) end ).
  7.  
  8. listen_loop(ListenSocket, IP, Port) ->
  9. {ok, LocalSocket} = gen_tcp:accept(ListenSocket),
  10. {ok, RemoteSocket} = gen_tcp:connect(IP, Port, [list, inet, {packet, raw}], 3000),
  11. bridge(LocalSocket, RemoteSocket),
  12. bridge(RemoteSocket, LocalSocket),
  13. listen_loop(ListenSocket, IP, Port).
  14.  
  15. bridge(RecvSocket, SendSocket) ->
  16. Receiver = spawn(fun() -> reciever(RecvSocket, SendSocket) end),
  17. gen_tcp:controlling_process(RecvSocket, Receiver),
  18. Receiver.
  19.  
  20. reciever(RecvSocket, SendSocket) ->
  21. receive
  22. {tcp, _Socket, Data} ->
  23. gen_tcp:send(SendSocket, Data),
  24. reciever(RecvSocket, SendSocket);
  25. {tcp_closed, _Socket} ->
  26. gen_tcp:close(SendSocket);
  27. die ->
  28. gen_tcp:close(SendSocket);
  29. _ ->
  30. void
  31. end.
Add Comment
Please, Sign In to add comment