"Too many open files - socket(2)" when invoking Socket.new

Discussion in 'Ruby' started by Clemens Wyss, May 13, 2009.

  1. Clemens Wyss

    Clemens Wyss Guest

    Given the follwing code snippet:

    require 'socket'
    include Socket::Constants
    socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
    sockaddr = Socket.pack_sockaddr_in( 1313, 'localhost' )
    socket.bind( sockaddr )
    socket.listen( 5 )
    client, client_sockaddr = socket.accept
    client.puts "Hello from script one!"
    puts "The client said, '#{client.readline.chomp}'"
    client.puts "Hello from script one!"
    socket.close

    On my WinXP development machine this script runs as expected. Running it
    on a WinXpEmbedded machine throws a
    Too many open files - socket(2) (Errno::EMFILE)
    exception on the line
    socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
    What could cause this exception?

    Any advice help appreciated
    Clemens
    --
    Posted via http://www.ruby-forum.com/.
     
    Clemens Wyss, May 13, 2009
    #1
    1. Advertising

  2. On 13.05.2009, at 16:41, Clemens Wyss wrote:

    > Given the follwing code snippet:
    >
    >
    > require 'socket'
    > include Socket::Constants

    begin
    >
    > socket =3D Socket.new( AF_INET, SOCK_STREAM, 0 )
    > sockaddr =3D Socket.pack_sockaddr_in( 1313, 'localhost' )
    > socket.bind( sockaddr )
    > socket.listen( 5 )
    > client, client_sockaddr =3D socket.accept
    > client.puts "Hello from script one!"
    > puts "The client said, '#{client.readline.chomp}'"
    > client.puts "Hello from script one!"

    ensure
    >
    > socket.close

    end


    Try to add these statements in your code and reboot your box,
    then it should not happen.

    > On my WinXP development machine this script runs as expected. =20
    > Running it
    > on a WinXpEmbedded machine throws a
    > Too many open files - socket(2) (Errno::EMFILE)
    > exception on the line
    > socket =3D Socket.new( AF_INET, SOCK_STREAM, 0 )
    > What could cause this exception?



    Too many open files for your OS results in such an exception.

    regards, Sandor Sz=FCcs
    --=
     
    Sandor Szücs, May 16, 2009
    #2
    1. Advertising

  3. Clemens Wyss

    Clemens Wyss Guest

    Dear Sandor,
    I don't see why your exception handling code should be of any help. The
    exception per se is the problem.

    Why (on XP embedded only) do I get
    Too many open files - socket(2) (Errno::EMFILE)
    on the line
    socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
    ?
    Also: opening the very same port with a simple VB App works, even on XP
    embedded...

    Still any help/advice appreciated
    Clemens

    Sandor Szücs wrote:
    > On 13.05.2009, at 16:41, Clemens Wyss wrote:
    >
    >> Given the follwing code snippet:
    >>
    >>
    >> require 'socket'
    >> include Socket::Constants

    > begin
    >>
    >> socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
    >> sockaddr = Socket.pack_sockaddr_in( 1313, 'localhost' )
    >> socket.bind( sockaddr )
    >> socket.listen( 5 )
    >> client, client_sockaddr = socket.accept
    >> client.puts "Hello from script one!"
    >> puts "The client said, '#{client.readline.chomp}'"
    >> client.puts "Hello from script one!"

    > ensure
    >>
    >> socket.close

    > end
    >
    >
    > Try to add these statements in your code and reboot your box,
    > then it should not happen.
    >
    >> On my WinXP development machine this script runs as expected.
    >> Running it
    >> on a WinXpEmbedded machine throws a
    >> Too many open files - socket(2) (Errno::EMFILE)
    >> exception on the line
    >> socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
    >> What could cause this exception?

    >
    >
    > Too many open files for your OS results in such an exception.
    >
    > regards, Sandor
    > Sz�cs


    --
    Posted via http://www.ruby-forum.com/.
     
    Clemens Wyss, May 18, 2009
    #3
  4. On 18.05.2009, at 07:39, Clemens Wyss wrote:

    > I don't see why your exception handling code should be of any help. =20=


    > The
    > exception per se is the problem.


    True, but I thought if you try to run your code and it doesn't close =20
    the sockets,
    then you get open files.... It's better to ensure the close operation.

    regards, Sandor Sz=FCcs
    --
     
    Sandor Szücs, May 18, 2009
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Laszlo Nagy
    Replies:
    1
    Views:
    4,853
    Mark Wooding
    Jan 27, 2009
  2. Jean-Paul Calderone
    Replies:
    0
    Views:
    970
    Jean-Paul Calderone
    Jan 27, 2009
  3. Laszlo Nagy
    Replies:
    0
    Views:
    550
    Laszlo Nagy
    Feb 1, 2009
  4. Steve Holden
    Replies:
    0
    Views:
    665
    Steve Holden
    Feb 1, 2009
  5. Steve Holden
    Replies:
    1
    Views:
    719
Loading...

Share This Page