【发布时间】:2013-02-07 21:52:46
【问题描述】:
我目前正在研究一种将数据包发送到 UDP 多播会话的方法。
这是我当前的代码(只是在听):
-module(zcclient).
-export([open/2,start/0]).
-export([stop/1,receiver/0]).
open(Addr,Port) ->
{ok,S} = gen_udp:open(Port,[{reuseaddr,true}, {ip,Addr}, {multicast_ttl,4}, {multicast_loop,fa$
inet:setopts(S,[{add_membership,{Addr,{225,0,0,111}}}]),
S.
close(S) -> gen_udp:close(S).
start() ->
S=open({225,0,0,111},12175),
Pid=spawn(?MODULE,receiver,[]),
gen_udp:controlling_process(S,Pid),
{S,Pid}.
stop({S,Pid}) ->
close(S),
Pid ! stop.
receiver() ->
receive
{udp, _Socket, IP, InPortNo, Packet} ->
io:format("~n~nFrom: ~p~nPort: ~p~nData: ~p~n",[IP,InPortNo,Packet]),
receiver();
stop -> true;
AnythingElse -> io:format("RECEIVED: ~p~n",[AnythingElse]),
receiver()
end.
它基本上监听指定的组播IP并输出From、Port和Data。
我们的目标是也能够发回一些数据包。
【问题讨论】:
-
您是要我们对数据包格式进行逆向工程吗?
-
我只是想知道我是否可以用十六进制或其他方式获取该数据包
-
This question 提出了一些将二进制打印为十六进制数字的建议。
-
我刚刚更新了这个问题,因为我写的方式不正确。感谢legoscia的快速回答:)
-
您的问题似乎仍然没有问题。您需要帮助解决什么特殊问题?