[erlang-questions] determining a socket's file descriptor integer value
Wed Apr 28 06:59:14 CEST 2010
Thanks Steve, that's perfect!
On Apr 27, 2010, at 8:47 PM, Steve Vinoski wrote:
> On Tue, Apr 27, 2010 at 11:29 PM, Jacob Vorreuter
> <> wrote:
>> When a socket is opened is it possible to get any information about its file descriptor?
>> I have an Erlang proxy server that accepts incoming HTTP connections, determines an appropriate backend server, opens a socket to that server and then proxies the HTTP request and response data between the backend server socket and the accepted client socket. I'm curious if I can accept the client socket in Erlang and then pass it to a NIF along with the ip and port of the backend server and do the actual proxying of data in C. Is that crazy talk? If I could determine the integer value of the client socket file descriptor that would be enough information to read and write from/to that socket in the C code, right?
>> The Erlang socket is a tcp_inet port driver from what I can tell. Is there some way to query it for the information I'm looking for?
> You can use prim_inet:getfd(Socket), with the caveat that prim_inet is
> an internal module.
> You might want to look at the Yaws sendfile linked-in driver I wrote a
> couple years ago, since it does similar things to what you're talking
> Not sure a NIF will work for you, though, given that you need to avoid
> blocking the VM.
More information about the erlang-questions