[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Socket in perl.



Rieccomi qui... a quanto pare non mi riesce di risolvere il mio problema di 
recuperare il risultato fa un apparato connesso attraverso la MOXA 
NPORT5630/16 ed utilizzando il protocollo UDP.

con lo script in perl che ho messo come allegato, riesco a mandare il 
comando play all'apparato (che infatti parte regolarmente), ma non riesco a 
ricevere la sua comunicazione di ack o nak...

Come mi ha suggerito Michele D'Amico, ho fatto un thread che parte in 
anticipo rispetto al mio lancio dei comandi, in modo che rimango in ascolto 
ancora prima di spedire (eventualmente è possibile sulla stessa socket che è 
stata creata rientrare con il parametro "l" di listen?).

purtroppo dalle prove fatte pare che non riesca a mettersi effettivamente in 
lettura sulla socket, e malgrado tutte le letture che sto facendo in questi 
giorni non riesco proprio a venirne a capo... 

Mi chiedo se non si possa passare questo thread in un file completamente 
separato, quindi lanciato dai diversi comandi e sviluppato per poter poi 
fornire al chiamante diverse risposte che si può aspettare, facendo comunque 
in modo che rimanga in ascolto in background sulla socket creata, senza 
bloccare però il chiamante...




In data mercoledì 23 settembre 2009 09:17:23, Michele D'Amico ha scritto:

[...]
> my $running = 1;
> share($running);
> my $timeout    = 10;
> 
> sub _service_recv {
> 	my $s = shift;
> 	print "service_recv started\n" if ($debug);
> 
> 	while($running) {
> 		foreach my $r ($s->can_read(1)){
> 			$r->recv($response, 2);
> 			print "ritorno: ", $response, "\n";
> 		}
> 	}
> 	print "service_recv shutting down\n" if ($debug);
> }
> 
> my $thread_recv = threads->new(\&_service_recv, $socket);
> $socket->send($CMD1);
> $socket->send($CMD2);
> 
> my $end = time() + $timeout;
> while ( time() < $end ) {
> 	sleep(1);
> }
> print "Timeout end!\n";
> $running = 0;
> $thread_recv->join();
> close($socket);
> exit(1);


> Spero che ti sia di aiuto
> 
> --Michele
> 

ci sono alcune correzioni che sono riportate poi nel codice allegato.
Grazie a Michele e a chiunque possa darmi una mano.

Byez
-- 
Gollum1
Tessssoro, dov'é il mio Tessssoro?

Attachment: play.pl
Description: Perl program


Reply to: