未公开的gen_tcp:unrecv以及接收缓冲区行为分析
October 1st, 2011
2 comments
原创文章,转载请注明: 转载自系统技术非业余研究
本文链接地址: 未公开的gen_tcp:unrecv以及接收缓冲区行为分析
gen_tcp:unrecv是个未公开的函数,作用是往tcp的接收缓冲区里面填入指定的数据。别看这小小的函数,用起来很舒服的。
我们先看下它的代码实现,Erlang代码部分:
%%gen_tcp.erl:L299 unrecv(S, Data) when is_port(S) -> case inet_db:lookup_socket(S) of {ok, Mod} -> Mod:unrecv(S, Data); Error -> Error end. %%inet_tcp.erl:L58 unrecv(Socket, Data) -> prim_inet:unrecv(Socket, Data). %%prim_inet.erl:L983 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% UNRECV(insock(), data) -> ok | {error, Reason} %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% unrecv(S, Data) -> case ctl_cmd(S, ?TCP_REQ_UNRECV, Data) of {ok, _} -> ok; Error -> Error end.
运行期c代码部分:
Read more…
Post Footer automatically generated by wp-posturl plugin for wordpress.
Recent Comments