Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

puudeli's scratchpad

by puudeli (Pilgrim)
on Mar 29, 2006 at 07:03 UTC ( #539883=scratchpad: print w/replies, xml ) Need Help??

SOLVED: setsockopt(SOCKET, SOL_SOCKET, SO_LINGER, pack('II', 1,0)) SO_LINGER takes two arguments, on/off and time

Why does setsockopt give me: setsockopt: Invalid argument at ./socket_connection_flooding.pl line 55.

use Socket qw(:all); use POSIX; my ($socket, $remote,$port, $iaddr, $paddr, $proto, $line); $remote = shift || 'localhost'; $port = shift; $iaddr = inet_aton($remote) || usage("no host: $remote"); $paddr = sockaddr_in($port, $iaddr); $proto = getprotobyname('tcp'); socket(SOCKET, PF_INET, SOCK_STREAM, $proto) || die "socket: $!"; setsockopt(SOCKET, SOL_SOCKET, SO_LINGER, pack('i',0)) || die "setsockopt: $!"; connect(SOCKET, $paddr) || die "connect: $!"; close (SOCKET) || die "close: $!";

Log In?
Username:
Password:

What's my password?
Create A New User
Chatterbox?
[Corion]: (maybe I should write this up as a SoPW) - currently, the "most efficient" data structure I come up with is a single array which I scan for the first fitting one-shot. Not efficient but I don't expect more than five outstanding one-shots anyway
[choroba]: can't you create a meta-key corresponding to the disjunction of the events?
[robby_dobby]: Corion: Heh. This whole thing smells of Strategy Pattern or MVC pattern.
[Corion]: And performance linear to the number of registered one-shots doesn't feel that bad. Maybe I should collect statistics on how many callbacks are outstanding ;)
[Corion]: choroba: Yes, but the longer I thought about efficient hashes mapping the event type back to their callbacks, and how to keep them in sync, the more I thought that all that optimization might just not be worth it, even if it's horribly inelegant
[Lady_Aleena]: My biggest problem with hashes at the moment is one with 2,501 keys.
[choroba]: how many event types are there?
[Corion]: Also I found that I can't conveniently weaken an array slot, which also is inconvenient, as I want my one-shots to disappear if the caller discards them
[Corion]: choroba: Currently two or three that my program handles (WWW::Mechanize:: Chrome), but there might be more that become interesting
[Corion]: But I don't expect more than 100 to be active at the same time, so I'm not really sure if there is a not-too-fancy data structure that is maintained with few lines of code where the performance is better than the linear scan ;)

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (7)
As of 2017-05-29 07:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?