Connessione socket a IP esterno tramite server

0

Sto lavorando su un'applicazione che usa socket. In sostanza, voglio trasmettere i dati tra due client. Dal momento che non riesco a collegare i due client insieme direttamente (non sono sulla stessa rete), avrò bisogno di collegare i due attraverso un server.

IlmiolatoclientèscrittoinJava,maillatoserverpotrebbeesserescrittoinqualsiasilingua.Hogiàesploratousandosocket.ioecc.MailproblemaacuimisonoimbattutoècheJavanonhaunabuonasoluzionewebsocket.Qualialtreopzionicisonolàfuoriperottenerelostessoeffetto?

Lasoluzionechehoinmenteinquestomomentoèfondamentalmente"l'inoltro" del flusso da un client all'altro attraverso il server, ma potrebbe esserci una via d'uscita migliore ...

    
posta beenjaminnn 14.07.2014 - 06:19
fonte

1 risposta

1

Ci sono alcuni modi per risolvere questo problema. Ho capito dal tuo diagramma e chiedo al tuo cliente che il client 1 è il server e il tuo server è in realtà un proxy per reindirizzare le connessioni. Le seguenti soluzioni sono in ordine di la loro complessità.

La prima è una soluzione di rete: se la connettività tra client 1 e client 2 è tutto ciò che devi realizzare. Tutto quello che devi fare nei tuoi clienti è aggiungere un percorso all'altro client, aggiungere un percorso al client 1 per raggiungere il client 2 e viceversa. Non devi cambiare il design del tuo programma.

Il secondo è un server proxy Web: se nel server è in esecuzione un server Web, è possibile configurare il server Web come proxy inverso. ( istruzioni del proxy Apache ). Ciò è utile se non si ha molto controllo sulla rete, ma si ha privilegi amministrativi per i propri server

Terzo è una soluzione di programmazione: credo che tu abbia in mente la soluzione giusta per scrivere un programma per "inoltrare" i pacchetti al client. Questo è chiamato server proxy, quindi ciò che il proxy farà sarà ricevere richieste dal client al server e riceve la risposta dal server e la inoltra al client.Ma questo non garantisce prestazioni che potrebbero avere qualche problema di prestazioni. Sceglierei in questo modo solo quando ho privilegi che mi permetteranno di cambiare solo l'applicazione I Ho scritto e ho accesso limitato a reti o server e eviterò assolutamente di intraprendere questa strada Se possibile per i sistemi di produzione.

La tua affermazione su Java che non ha un buon socket web non è vera, l'API socket Java è probabilmente uno dei socket più utili là fuori.

    
risposta data 14.07.2014 - 14:05
fonte

Leggi altre domande sui tag