Come da titolo esiste un modo per rimanere in ascolto con + di un socket sulla stessa porta?
Come da titolo esiste un modo per rimanere in ascolto con + di un socket sulla stessa porta?
In che senso? Cosa devi fare?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Allora, ho un servizio che rimane in ascolto di pacchetti multicast su una porta, esistono nella rete o nello stesso pc altri servizi che fanno operazioni accessorie che dovrebbero ascoltare la stessa porta per ricevere gli stessi pacchetti per poter operare..
Ora se i servizi sono su pc differenti il problema non si pone.. se però almeno 2 servizi stanno sulla stessa macchina allora il problema si pone..
Ogni servizio ha un socket in ascolto su una porta (la stessa), in questo momento solo un socket alla volta può rimanere in ascolto.. come fare? Esiste un modo per non "bloccare" la porta col il socket in modo che altri possano ascoltare?
Un attimo ... se parli di multicast, potrebbe essere possibile ...
Quale codice usi adesso?
P.S. Per farla ancora piu' facile, perche' non usi un secondo IP ?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Un secondo ip? Spega meglio per favore..
Uso multicast sì.. in parole povere o uso un udpclient per ricevere ed uno per inviare o posso pure usare un socket normale e settare le option per aggiungermi al multicast (che per ora non ci sono riuscito per via di molte eccezioni)
edit: ok riesco a fare il multicast senza l'uso dell'udpclient.. il problema porta rimane comunque
Aggiungi un secondo IP alla tua macchina e metti il tuo servizio in ascolto sul secondo IP.
No MP tecnici (non rispondo nemmeno!), usa il forum.
No in questo caso non è accettabile.. perchè se avessi 4 servizi mi servirebbero 4 ip..
Mi servirebbe un modo per fare port sharing ma col framework 2.0
A parte che potresti avere i 4 IP, comunque, se si parla di multicasting, se non ricordo male, con la semplice bind puoi utilizzare la stessa porta con piu' socket ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
già provato col bind di più socket sulla stessa porta.. posto il codice:
2 socket assieme così non vanno.. il secondo da eccezione sul bindcodice:EndPoint remoteEP = (EndPoint)new IPEndPoint(IPAddress.Any, listen_port); Socket so = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); so.Bind(remoteEP); so.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip, IPAddress.Any)); //ricevo i dati byte[] data = new byte[so.ReceiveBufferSize]; so.Receive(data); string mess = Encoding.Default.GetString(data); so.Disconnect(false);
prova cosi':
prima di fare il bind chiami:
NomeSocket.SetSocketOption(SocketOptionLevel.Socke t,SocketOptionName.ReuseAddress, 1);
I got the remedy