PDA

View Full Version : [C#...NET in generale]CANALI TCP


Mezzetti0903
06-03-2003, 13:30
Buongiorno a tutti e grazie per l'aiuto!!
Ho già postato in altri forum ma non ho ottenuto risposte, provo in questo fiducioso che qualcuno sappia aiutarmi!

questo è il mio codice (C#):

TcpChannel chan = new TcpChannel( 9000 );
ChannelServices.RegisterChannel( chan );

RemotingConfiguration.RegisterWellKnownServiceType( typeof(ChatApplication.Object1), "Obj1", WellKnownObjectMode.Singleton );

RemotingConfiguration.RegisterWellKnownServiceType( typeof(ChatApplication.Object2), "Obj2", WellKnownObjectMode.Singleton );

...finora non ho avuto questa necessità ma adesso vorrei nel "sdoppiare" il canale...cioè registrare su un primo canale (9000) Object1 e invecein un secondo (9001) Object2...
Come posso fare ciò??..finora ho ottenuto solo errori del tipo..CANALE GIA' REGISTRATO!!!

Vi riporto il codice della prova che ho fatto (ho tolto la registrazione degli oggetti perchè il problema a monte è la registrazione del canale)!
TcpChannel chan = new TcpChannel( 9000 );
ChannelServices.RegisterChannel( chan );

TcpChannel chan2 = new TcpChannel( 9001 );
ChannelServices.RegisterChannel( chan2 );

un ultima cosa... ho provato a registrare i canali addirittura da due oggetti diversi ma il problema è sempre il solito....canale già registrato

GRAZIE!![/code]

Kleidemos
06-03-2003, 14:26
mi maileresti il progetto di VS.net alla mia mail francesca8810@tin.it .....................cosi vedo il problema e cerco di capire come funzia il tuo prog :D

atragon
06-03-2003, 19:57
Credo che il problema sia dato dal fatto che il nome di default del canale è "tcp" quindi le 2 istanze collidono su quel nome. Devi settare diversamente almeno uno dei due.

Mezzetti0903
06-03-2003, 21:05
Intendi l'attributo Name del TcpChannel??

Ora provo..... mi potresti fare un esemio però con la registrazione dei "servizi"?? come vedi non c'è nulla per registrare il dato oggetto sul DATO canale quindi non saprei come fare!

quanto a te kledimos...ehm...non posso darti tutta l'applicazione... mi spiace!

Kleidemos
06-03-2003, 21:12
Originally posted by "Mezzetti0903"

Intendi l'attributo Name del TcpChannel??

Ora provo..... mi potresti fare un esemio però con la registrazione dei "servizi"?? come vedi non c'è nulla per registrare il dato oggetto sul DATO canale quindi non saprei come fare!

quanto a te kledimos...ehm...non posso darti tutta l'applicazione... mi spiace!

la parte riguardante i canali?

atragon
06-03-2003, 22:08
Non ho il framework installato, qui, ma mi pare che non sia immediato l'assegnazione di un nome. Il problema è comunque sicuramente quello. Se ho tempo domani provo.... :)

Mezzetti0903
10-03-2003, 15:56
Ho risolto!!..posto il codice se mai vi potesse servire!!..... tra l'altro invece di sdoppiare il server ho fatto sì che il client potesse registrare più canali..... meglio così.........

Una domanda per te artgon... la priorità secondo te a quanto è giusto metterla??

Se avete una soluzione più elegante postate..........



private TcpChannel Chan = null;
System.Collections.Specialized.ListDictionary propietà = new System.Collections.Specialized.ListDictionary();
propietà.Add("name", "CanaleTCP"+DateTime.UtcNow.ToString() );
propietà.Add("priority", "20");
propietà.Add("port", "0");
BinaryClientFormatterSinkProvider sinkProvider = new BinaryClientFormatterSinkProvider();
BinaryServerFormatterSinkProvider sinkProviderS = new BinaryServerFormatterSinkProvider();

Chan = new TcpChannel(propietà,sinkProvider,sinkProviderS);
ChannelServices.RegisterChannel( Chan );

atragon
10-03-2003, 18:33
Buono il codice, è interessante perchè usando Dictionary hai un controllo programmatico sulla faccenda, molto più elastico dell'uso dei files di configurazione....credo che questo sia un esempio degno di essere bookmarcato ;)

Per quanto riguarda la priorità secondo me dipende.....quanto + è alta tanto maggiore è la probabilità di essere connessi prima quindi si decide sulla base di come vuoi gestire il tutto....è interessante fare qualche esperimento su quanto questo effetivamente incida...se hai tempo e voglia.....