Problems? Is your data what you think it is? | |
PerlMonks |
Problems with INET, Select, and Win32by bob0206 (Initiate) |
on Nov 24, 2010 at 22:23 UTC ( [id://873546]=perlquestion: print w/replies, xml ) | Need Help?? |
bob0206 has asked for the wisdom of the Perl Monks concerning the following question: I have been trying to make the following code work without success. It is a simple thread waiting on a UDP port. I have lots of possible devices that may send packets to the port which are then simply placed in a file (not included here). I have verified that the UDP socket is created (netstat -a) and that the server is the sending the packets to the PC (Wireshark). I ran a Windows program that listened on the same UDP and it worked okay. I am running Strawberry perl, v 5.12. I am having two problems. The first is that the can_read never fires except for timeouts. If I take it out, the recv blocks and never completes. As noted above, the sending is working and the port is open. I print out the handles in the function and the one I added is present. I also found that if I give a timeout = 0, can_read returns immediately and the whole routine loops rapidly. The documenation says a value of 0 results in a blocking call. The second is that when I set $thread_stop (to kill the thread), Perl crashes when I execute the return. The routine I use to kill the thread, sets thread_stop and then does a join on the thread. I am using Visual Studio as my editor and it gets invoked with a runtime exception. Can someone please look at the following code and tell me what I have done wrong? It looks fine to me and I have been fighting it for days. Thanks
Back to
Seekers of Perl Wisdom
|
|