eric256 has asked for the wisdom of the Perl Monks concerning the following question:
Okay here is the situation. I'm trying to connect to MSN's IM servers (a giant headache) and I have all the code. In fact it used to work just fine, and occasionaly still does. The problem is that sometimes data seems stuck. For instance sometimes it just sets there until you send it another IM then it processes the previous IM. Which lead me to beleive that it had to do with buffers and my reading of the socket. So I read and read and re-read and from all I could tell IO::Socket::INET is set to autoflush by default. Which I thought meant that it would flush the buffered data. I could be way off all together I don't know. I am currently useing the following code to check the socket and then read from it.
while (1) { my @ready; @ready = $Select->can_read(1); foreach $fh (@ready) { my $fn = $fh->fileno; unless ($_ = $fh->getline()) { $Select->remove($fh); next; } # work with $_ here } }
Thats not the exact code but the removed stuff has nothing to do with the sockets. Now I wonder if the problem might not lie with getline(). If I call getline() and there is more than one line, shouldn't the handle still be returned by can_read() the next time threw the loop?
If you could help me with this I would be very thankful. I kind of inherited the socket code, I mostly work with the exchange of data with the server because this code worked fine up until recently.
BTW I have checked the $Select and I am fairly sure that the socket is staying open and in there. There are times whene there are multiple sockets in that and times when there is only one, but it never drops to 0. In other words its acting correctly.
Thanks agian for any ideas or help with the sockets.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Windows Sockets Seems stuck
by tye (Sage) on Mar 20, 2004 at 05:10 UTC | |
by eric256 (Parson) on Mar 20, 2004 at 07:36 UTC | |
|
Re: Windows Sockets Seems stuck
by eric256 (Parson) on Mar 20, 2004 at 04:40 UTC |