Why do I get this error? Am I possibly creating my TCPSockets incorrectly? When I have more than 10 connections going out I tend to get this error. Now, I can rescue the error, but that's not what I want. How do I code this correctly? (It's just a simple implementation) How can I end a TCP conversation/connection with fin/ack and not RST?
on 2013-01-07 12:39
on 2013-01-07 12:43
On Mon, Jan 7, 2013 at 12:39 PM, Sarek Mather <lists@ruby-forum.com> wrote: > Why do I get this error? > Am I possibly creating my TCPSockets incorrectly? > When I have more than 10 connections going out I tend to get this error. > Now, I can rescue the error, but that's not what I want. > How do I code this correctly? (It's just a simple implementation) It's almost impossible to answer your questions with as little context as you provided. Please provide more details. What is your application doing? Where do you get timeouts? Did you make sure network connectivity between the two computers involved is OK? Are you sure there are no artificial limitations to connections that can be opened? What kind of software are you connecting to? ... Kind regards robert
on 2013-01-07 13:05
Oh, should I mention this is TCP/HTTP? Any possibilities are fine. In fact, a decent book concerning RST, Error timeouts (all errors?), TCP (I already know 'too much' i.e. finding it difficult to actually 'learn' more), and fin/ack. In fact, if someone can tell me if it's possible to close connections with fin/ack rather than RST. That helps too. It's either on the client-side or the server-side, I think it's on the server-side, but I just wanted to check it's not on the client-side. I'm really bad at programming sockets... in general, actually. (sometimes up to 20 connections are created) This is all it is, just re-used and repeated in same cases. (Without the values of the variables): socket = TCPSocket.new server, 80 socket.print(request) socket.flush # is that even needed?... socket.close If it is the server ignoring when I have 10+ connections, I wonder how I can deal with that.. I thought tcp was supposed to end with a fin/ack handshake, not RSTs.. Thank you, really if I could just get some help I would appreciate it. Anything that might help me? *artifical limitations? No clue. *where do I get time-outs? 10+ connections, I think after SYN is sent. *Network connectivity? Fairly certain that's fine. I can't test it beyond what I have.
on 2013-01-07 13:57
I'm working on debugging it, but *shrugs* sometimes 'block in connect', sometimes 504 http error, or 408 http error. Maybe when I learn something I'll figure it out.
on 2013-01-07 14:29
On Mon, Jan 7, 2013 at 1:57 PM, Sarek Mather <lists@ruby-forum.com> wrote: > I'm working on debugging it, but *shrugs* sometimes 'block in connect', > sometimes 504 http error, or 408 http error. Maybe when I learn > something I'll figure it out. Wireshark is your friend - if you can / are allowed to use it. Cheers robert
on 2013-01-07 14:34
On Mon, Jan 7, 2013 at 1:06 PM, Sarek Mather <lists@ruby-forum.com> wrote: > Any possibilities are fine. In fact, a decent book concerning RST, Error > timeouts (all errors?), TCP (I already know 'too much' i.e. finding it > difficult to actually 'learn' more), and fin/ack. In fact, if someone > can tell me if it's possible to close connections with fin/ack rather > than RST. That helps too. http://www.kohala.com/start/unpv22e/unpv22e.html > It's either on the client-side or the server-side, I think it's on the > server-side, but I just wanted to check it's not on the client-side. > I'm really bad at programming sockets... in general, actually. I don't understand this: first you say you know too much and now you say you're bad at socket programming. Maybe you know the wrong things? > (sometimes up to 20 connections are created) This is all it is, just > re-used and repeated in same cases. (Without the values of the > variables): > > socket = TCPSocket.new server, 80 > socket.print(request) > socket.flush # is that even needed?... > socket.close Better use the block form because otherwise proper cleanup is not guaranteed. TCPSocket.new server, 80 do |socket| socket.print(request) end I think #flush is usually not needed: TCPSocket.open('www.google.com', 80) {|s| p s, s.sync} #<TCPSocket:fd 5> true => [#<TCPSocket:(closed)>, true] > If it is the server ignoring when I have 10+ connections, I wonder how I > can deal with that.. I thought tcp was supposed to end with a fin/ack > handshake, not RSTs.. > > Thank you, really if I could just get some help I would appreciate it. > Anything that might help me? Post your code - client and server. Cheers robert
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.