Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia
Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia
Sony Xperia 1 VII propone un design sobrio e funzionale, con un comparto fotografico di ottimo livello caratterizzato da uno zoom continuo e prestazioni generali da top di gamma puro. Viene proposto con una personalizzazione software sobria e affidabile, ma presenta qualche criticità sul fronte ricarica rapida. Il dispositivo punta su continuità stilistica e miglioramenti mirati, rivolgendosi al solito pubblico specifico del brand giapponese.
Attenti a Poco F7: può essere il best buy del 2025. Recensione
Attenti a Poco F7: può essere il best buy del 2025. Recensione
Poco F7 5G, smartphone che punta molto sulle prestazioni grazie al processore Snapdragon 8s Gen 4 e a un display AMOLED da ben 6,83 pollici. La casa cinese mantiene la tradizione della serie F offrendo specifiche tecniche di alto livello a un prezzo competitivo, con una batteria generosissima da 6500 mAh e ricarica rapida a 90W che possono fare la differenza per gli utenti più esigenti.
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Abbiamo provato per molti giorni il nuovo Z Fold7 di Samsung, un prodotto davvero interessante e costruito nei minimi dettagli. Rispetto al predecessore, cambiano parecchie cose, facendo un salto generazionale importante. Sarà lui il pieghevole di riferimento? Ecco la nostra recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-12-2011, 13:48   #1
UpdatedMind
Member
 
L'Avatar di UpdatedMind
 
Iscritto dal: Mar 2010
Messaggi: 60
[Java] Socket e ip

Salve a tutti, sto riscontrando un problema nella creazione di un programma

Il programma ha per base una chat di solo testo, gestita in maniera alquanto semplice. Ogni Postazione fa sia da client che da server per l'invio e ricezione(sempre in ascolto) di nuovi messaggi.

Il mio problema è il seguente: La connessione avviene Ip - Ip con una porta scelta da me. Il programma funziona correttamente in locale, e in remoto con l'aiuto di un qualsiasi programma di reti remote come hamachi. Nel momento in cui cerco di farli comunicare direttamente attraverso gli ip... non c'è risposta.
Non penso sia un problema di firewall in quanto l'ho testato anche disattivandolo. Molto probabilmente sbaglio io qualcosa concettualmente.. help

(Riassumendo, il programma è scritto correttamente in quanto localmente e in remoto attraverso gli ip di hamachi invio e ricevo senza problemi... mentre senza hamachi, con gli ip veri e propri... niente )

grazie in anticipo
UpdatedMind è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2011, 14:24   #2
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Dipende che tipo di ip parli.. se sei in una lan dovrebbe comunque funzionare, ma se invece cerchi di contattare un host fuori dalla tua lan la situazione diventa più complicata.

Com'è configurata la tua rete (routers, ecc... )e quella della macchina che cerchi di contattare?
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2011, 14:38   #3
UpdatedMind
Member
 
L'Avatar di UpdatedMind
 
Iscritto dal: Mar 2010
Messaggi: 60
Quote:
Originariamente inviato da clockover Guarda i messaggi
Dipende che tipo di ip parli.. se sei in una lan dovrebbe comunque funzionare, ma se invece cerchi di contattare un host fuori dalla tua lan la situazione diventa più complicata.

Com'è configurata la tua rete (routers, ecc... )e quella della macchina che cerchi di contattare?
Sì, infatti in lan funziona tranquillamente. Localmente non ho alcun problema.

Le due macchine comunicanti dovrebbero essere due pc comunissimi. Quindi si presume che ognuno di loro sia collegato ad un router.

PC#1 - router - internet - router - PC#2

In che modo dovrei instaurare una connessione funzionante? Come posso far avvenire uno scambio dati?
UpdatedMind è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2011, 14:49   #4
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Quando un pc è dietro un router allora il pc è "nattato". Hai quindi 2 alternative

1) imposti il port forwarding del router in modo che le connessioni TCP o UDP su una certa porta vengano inoltrate al pc dove hai la chat. Metodo bruttissimo e poco pratico
2) ti crei un semplice server che fa solo da server. Questo lo metti dove ti pare avendo sempre i dovuti accorgimenti dei computer nattati (quindi port forwarding se sei dietro un router). I client ti fanno solo da client e si connettono al server e la loro comunicazione avviene attraverso di esso.

quindi

PC1 --> router --> ( internet - server - internet ) <-- router <-- PC2

non so se sono riuscito a spiegarmi bene
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2011, 14:52   #5
Mettiu_
Member
 
L'Avatar di Mettiu_
 
Iscritto dal: Jul 2011
Messaggi: 246
Come presagito da clockover, la tua situazione è più complessa perchè i due pc, essendo collegati tramite router (che fa da NAT), non sono raggiungibili dall'esterno della rete di cui fanno parte. I due pc, per parlarsi in internet direttamente devono avere degli ip pubblici che, nel tuo caso, hanno solo i router. Quindi, visto che mi pare di capire che entrambi gli host devono fungere da server, hai due possibilità:
- entrambi i PC hanno IP pubblici (strada non molto percorribile);
- entrambi i router vengono configurati per fare port-forwarding della porta su cui la tua applicazione lavora.

EDIT: ops, scrivevamo contemporaneamente :-P
__________________
Non c'è cosa peggiore nella vita di un programmatore di un errore che si presenta solo ogni tanto.

CONCLUSO POSITIVAMENTE CON: oldfield
Mettiu_ è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2011, 14:53   #6
UpdatedMind
Member
 
L'Avatar di UpdatedMind
 
Iscritto dal: Mar 2010
Messaggi: 60
Quote:
Originariamente inviato da clockover Guarda i messaggi
Quando un pc è dietro un router allora il pc è "nattato". Hai quindi 2 alternative

1) imposti il port forwarding del router in modo che le connessioni TCP o UDP su una certa porta vengano inoltrate al pc dove hai la chat. Metodo bruttissimo e poco pratico
2) ti crei un semplice server che fa solo da server. Questo lo metti dove ti pare avendo sempre i dovuti accorgimenti dei computer nattati (quindi port forwarding se sei dietro un router). I client ti fanno solo da client e si connettono al server e la loro comunicazione avviene attraverso di esso.

quindi

PC1 --> router --> ( internet - server - internet ) <-- router <-- PC2

non so se sono riuscito a spiegarmi bene
Ho ben capito dal punto di vista teorico e ti ringrazio per la conferma ^ ^

Il fatto è che il tipo di programma creato, volevo farlo funzionare sia da client che da server. Ma che segua la tua o questa strada c'è sempre il problema della connessione "nattata".

Programmo in java da relativamente poco... e possibilmente mi mancano le basi per poter implementare questo passaggio. Mi servirebbe qualche esempio di codice o di indicazioni sui comandi da usare
UpdatedMind è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2011, 14:55   #7
UpdatedMind
Member
 
L'Avatar di UpdatedMind
 
Iscritto dal: Mar 2010
Messaggi: 60
Quote:
Originariamente inviato da Mettiu_ Guarda i messaggi
Come presagito da clockover, la tua situazione è più complessa perchè i due pc, essendo collegati tramite router (che fa da NAT), non sono raggiungibili dall'esterno della rete di cui fanno parte. I due pc, per parlarsi in internet direttamente devono avere degli ip pubblici che, nel tuo caso, hanno solo i router. Quindi, visto che mi pare di capire che entrambi gli host devono fungere da server, hai due possibilità:
- entrambi i PC hanno IP pubblici (strada non molto percorribile);
- entrambi i router vengono configurati per fare port-forwarding della porta su cui la tua applicazione lavora.

EDIT: ops, scrivevamo contemporaneamente :-P
Esatto.. i client fungono anche da server

Da quel che ho capito dovrei implementare il meccanismo che permetta di inoltrare al pc in questione il messaggio, passando dal suo router e instradandolo correttamente.... Ma come ho già risposto.. mi mancano le basi per questo tipo di operazione.. qualche consiglio?
UpdatedMind è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2011, 15:09   #8
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Se capisci questo semplice esempio sono sicuro che sarà molto più semplice di come l'hai implementata.

1) Server
il server sta dove ti pare, anche dietro un router quindi nattato. Accetta connessioni dall'esterno mediante dei thread
2) Client
questi possono stare anche sottoterra, basta che c'è una rete. Ognuno ha un identificatore univoco. Ad esempio come messenger sono identificati con un indirizzo mail

il client si connette al server, il quale vi rimane in contatto mediante una connessione TCP/IP e sta li in attesa
l'altro client fa la stessa cosa

quando io scrivo un messaggio a te il messaggio passa attraverso il server il quale ti inoltra il messaggio. E questa è la tua chat funzionante ovunque, basta semplicemente sapere l'indirizzo del server e solo del server.


Se vuoi rimanere come stai devi operare su entrambi i routers.
Entri nella pagina di configurazione del router e trovi la pagina relativa al port forwarding (inoltro di porta). Scegli il tipo di connessione (TCP o UDP), il numero di porta con la quale dialoghi e l'indirizzo ip del computer. Questa operazione va fatta su entrambi i routers non dimenticare.
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2011, 15:18   #9
UpdatedMind
Member
 
L'Avatar di UpdatedMind
 
Iscritto dal: Mar 2010
Messaggi: 60
Quote:
Originariamente inviato da clockover Guarda i messaggi
Se capisci questo semplice esempio sono sicuro che sarà molto più semplice di come l'hai implementata.

1) Server
il server sta dove ti pare, anche dietro un router quindi nattato. Accetta connessioni dall'esterno mediante dei thread
2) Client
questi possono stare anche sottoterra, basta che c'è una rete. Ognuno ha un identificatore univoco. Ad esempio come messenger sono identificati con un indirizzo mail

il client si connette al server, il quale vi rimane in contatto mediante una connessione TCP/IP e sta li in attesa
l'altro client fa la stessa cosa

quando io scrivo un messaggio a te il messaggio passa attraverso il server il quale ti inoltra il messaggio. E questa è la tua chat funzionante ovunque, basta semplicemente sapere l'indirizzo del server e solo del server.


Se vuoi rimanere come stai devi operare su entrambi i routers.
Entri nella pagina di configurazione del router e trovi la pagina relativa al port forwarding (inoltro di porta). Scegli il tipo di connessione (TCP o UDP), il numero di porta con la quale dialoghi e l'indirizzo ip del computer. Questa operazione va fatta su entrambi i routers non dimenticare.
Ammettiamo di voler implementare la tua scelta (n°1).
Il server lo posiziono nel mio pc, ergo nattato a causa della presenza del router. Un client esterno (in questo caso l'altro pc) per poter accedere al mio server non avrà lo stesso problema di connessione? Il mio problema è solo questo.. fare in modo che il messaggio parta da un pc e arrivi ad un altro (che arrivi ad un server o ad un client-server) ovvero superare il problema del nat


edit: da quel che ho capito, pensandoci... il problema non è legato al java o ad una qualche libreria con comandi da utilizzare, bensì ad una configurazione del router... no?

Ultima modifica di UpdatedMind : 24-12-2011 alle 15:23.
UpdatedMind è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2011, 15:27   #10
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Si hai lo stesso problema (lo avevo già menzionato infatti) ma lo risolvi per il server con gli stessi accorgimenti per i computer nattati del mio ultimo post. Cioè abilitando il port forwarding per il server, però solo per il server. I client non avranno di questo problema
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2011, 15:34   #11
UpdatedMind
Member
 
L'Avatar di UpdatedMind
 
Iscritto dal: Mar 2010
Messaggi: 60
Quote:
Originariamente inviato da clockover Guarda i messaggi
Si hai lo stesso problema (lo avevo già menzionato infatti) ma lo risolvi per il server con gli stessi accorgimenti per i computer nattati del mio ultimo post. Cioè abilitando il port forwarding per il server, però solo per il server. I client non avranno di questo problema
Certamente... credo di aver afferrato il problema con chiarezza. Grazie

Ergo, se volessi realizzare questa piccola chat dovrei comunque affidarmi necessariamente ad un programma che generi una rete locale come hamachi... (in quel caso tutto funziona correttamente...) che evidentemente bypassa il problema. A meno che non decidessi di creare un server e di modificare le impostazioni del mio router. Tutti necessiterebbero comunque del mio server attivo... ma non avrebbero localmente problemi di settaggi.
Non posso creare con facilità un'operazione di server-client se non con questa "spesa".
Correggimi se sbaglio. Grazie ancora per l'aiuto.

edit: BUON NATALE XD

Ultima modifica di UpdatedMind : 24-12-2011 alle 15:43.
UpdatedMind è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2011, 16:03   #12
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
In parole povere è come hai detto tu si

Buone Feste
clockover è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia Recensione Sony Xperia 1 VII: lo smartphone per ...
Attenti a Poco F7: può essere il best buy del 2025. Recensione Attenti a Poco F7: può essere il best buy...
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale Recensione Samsung Galaxy Z Fold7: un grande sal...
The Edge of Fate è Destiny 2.5. E questo è un problema The Edge of Fate è Destiny 2.5. E questo ...
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello Ryzen Threadripper 9980X e 9970X alla prova: AMD...
Oltre 1.700 km con una ricarica: l'assur...
Maxi annuncio dalla Casa Bianca: Apple p...
Microonde con grill, super venduto e app...
Pubblicazioni scientifiche false in aume...
Ecco le 100 startup che prenderanno part...
Pandora colpita da un attacco informatic...
Cooler Master MasterFrame 360 Panorama S...
Motorola e Swarovski lanciano The Brilli...
Wikipedia dichiara guerra all'IA spregiu...
Dai social ai farmaci dimagranti: il nuo...
Addio spam su WhatsApp? Ecco le nuove di...
Su Windows 11 25H2 cambierà (in p...
Per la prima volta un portatile gaming c...
Meta condannata per aver violato la priv...
Hai almeno 16GB di RAM? Ecco il nuovo mo...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:00.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v