9 messaggi dal 23 settembre 2016
Ciao a tutti,
sto realizzando un programma Web, il programma è installato su un server remoto tramite IIS con accesso da esterno tramite IP pubblico.
Da esterno accedo tranquillamente senza problemi, il problema avviene quando cerco di mandare un dato in tcp in locala, o meglio sulla stesse rete da dove io faccio l'accesso.
Es: da casa ho 2 pc connessi sulla stessa rete, su uno mi connetto alla pagina Web e cerco di inviare un dato in TCP al altro pc che ha un programma in ascolto ma appena fa per inviare mi dice che non si connette con quel indirizzo.... cosa posso fare??
grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Luca,
credo che tu debba aprire la porta nel firewall di Windows sulla macchina che agisce da server (cioè su quella che deve ricevere la connessione).

Su che porta TCP vuoi ricevere le connessioni? La 80 o altra?
Qui trovi le istruzioni per aprire una porta nel firewall.
https://www.tomshardware.com/news/how-to-open-firewall-ports-in-windows-10,36451.html

ciao,
Moreno
Modificato da BrightSoul il 27 marzo 2019 13:59 -

Enjoy learning and just keep making
9 messaggi dal 23 settembre 2016
Ciao e grazie per la risposta.
Il problema non è il firewal...la macchina che contiene il servizio IIS e dove cè installato il mio programma WEB ha indirizzo IP 192.168.1.139. Da casa mia con un pc(indirizzo 192.168.2.109) tramite ip pubblico e una nat raggiungo la pagina di login del la mia app web in maniera regolare, una volta effettuato il login la macchina cerca di connettersi ad un indirizzo assegnato da me, ovvero un pc che sta a casa mia (ip 192.168.2.108) ma invece di inviare la richiesta da il mio pc (192.168.2.109) la invia dal pc che contiene iss e il programma (192.168.1.139) e logicamente non raggiunge il pc. Cè un modo per far si che la connessione venga effettuata dalla macchina che apre la pagina web? Uso il classico Socket, è sbagliato?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ah ok Luca, ora ho capito.


Cè un modo per far si che la connessione venga effettuata dalla macchina che apre la pagina web?

Sì, ma soltanto con codice lato client, quindi dovrai risolvere il problema scrivendo codice javascript.


Uso il classico Socket, è sbagliato?

In javascript non esistono funzioni che ti permettano di aprire socket TCP in maniera arbitraria. Devi sempre sfruttare i protocolli previsti dalla specifica, come i WebSocket, oppure far viaggiare i tuoi messaggi sfruttando altre tecniche basate su HTTP come long polling e server-sent events.

In ASP.NET esiste una soluzione chiamata SignalR che ti permetterà appunto di sfruttare tutti questi protocolli in maniera semplificata, così che potrai scambiare messaggi in maniera bidirezionale tra client e server, proprio come faresti con un socket tradizionale.

Ecco una guida per realizzare il primo progetto di esempio: una chat.
https://docs.microsoft.com/it-it/aspnet/signalr/overview/getting-started/tutorial-getting-started-with-signalr

Tu che versione di ASP.NET (o ASP.NET Core) stai usando?

ciao,
Moreno
Modificato da BrightSoul il 27 marzo 2019 21:42 -

Enjoy learning and just keep making
9 messaggi dal 23 settembre 2016
Grazie 1000 Moreno :),
 
Tu che versione di ASP.NET (o ASP.NET Core) stai usando?

Uso la versione 4.5.2

Quindi in questo modo posso inviare dati anche ad un diverso programma anche non per forza Web?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, prego!


Quindi in questo modo posso inviare dati anche ad un diverso programma anche non per forza Web?

Sì, perché la parte server di SignalR la puoi ospitare anche in un'applicazione console (un programma .exe). Questa modalità si chiama "self-host" perché l'applicazione server è autosufficiente e non ha bisogno di IIS.

Lo trovi spiegato pari pari in questa pagina della documentazione. C'è anche un progetto da scaricare.
https://docs.microsoft.com/it-it/aspnet/signalr/overview/deployment/tutorial-signalr-self-host
Lì trovi spiegata sia la realizzazione dell'applicazione server con .NET che la parte client con javascript.

ciao,
Moreno

PS. Nella macchina in cui gira l'applicazione server dovrai aprire la porta nel firewall di windows come già anticipato in un precedente post.
Modificato da BrightSoul il 28 marzo 2019 07:45 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.