file:sendfile/2
通过套接字端口 Socket 发送文件数据
用法:
sendfile(Filename, Socket) -> {ok, BytesSent} | {error, Reason}
内部实现:
%% sendfile/2 -spec sendfile(Filename, Socket) -> {'ok', non_neg_integer()} | {'error', inet:posix() | closed | badarg | not_owner} when Filename :: name_all(), Socket :: inet:socket(). sendfile(Filename, Sock) -> case file:open(Filename, [read, raw, binary]) of {error, Reason} -> {error, Reason}; {ok, Fd} -> Res = sendfile(Fd, Sock, 0, 0, []), file:close(Fd), Res end.
通过套接字端口 Socket 发送文件 Filename 的数据。如果发送成功,则返回 {ok, BytesSent},否则,返回 {error, Reason}
{ok, Socket} = gen_tcp:connect(?HOST, ?PORT, [binary, {packet, 0}]), file:sendfile("/app/rebar.config", Socket).