Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254

    [c#] Più socket sulla stessa porta

    Come da titolo esiste un modo per rimanere in ascolto con + di un socket sulla stessa porta?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    In che senso? Cosa devi fare?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    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?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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.

  5. #5
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    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

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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.

  7. #7
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    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

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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.

  9. #9
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    già provato col bind di più socket sulla stessa porta.. posto il codice:

    codice:
    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);
    2 socket assieme così non vanno.. il secondo da eccezione sul bind

  10. #10
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    prova cosi':
    prima di fare il bind chiami:
    NomeSocket.SetSocketOption(SocketOptionLevel.Socke t,SocketOptionName.ReuseAddress, 1);
    I got the remedy

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.