pinguino (Ex-Member)
Pro
Messaggi: 172
Iscritto: 26/12/2007
|
Salve. Da tempo cerco di creare un applicazione che si metta in ascolto sulla porta del mio router n. 1752.
Codice sorgente - presumibilmente VB.NET |
Dim host As IPAddress = IPAddress.Parse(Label1.Text) Dim mySock As Socket Dim ip As IPHostEntry Dim ep As IPEndPoint Dim listener As TcpListener ep = New IPEndPoint(host, 1752) mySock = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) listener = New TcpListener(ep) listener.Start() While True mySock = listener.AcceptSocket() ElaboraMessaggio(mySock) End While
|
Il problema è che in questo pezzo di codice, mi da sempre errore su listener.Start dicendo: "Indirizzo richiesto non valido nel proprio contesto"
Sto impazzendo, premetto che è la prima volta che lavoro con i sockets...
Pls aiuto
Ultima modifica effettuata da pinguino il 10/07/2010 alle 16:53 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Postato originariamente da pinguino:
Salve. Da tempo cerco di creare un applicazione che si metta in ascolto sulla porta del mio router n. 1752.
|
Una porta del tuo router? Il router non ha porte ...
"Indirizzo richiesto non valido nel proprio contesto" |
Vuol dire che inserisci un IP che non è attivo su nessuna delle tue interfacce di rete.
Devi inserire il tuo IP locale attuale.
Sto impazzendo, premetto che è la prima volta che lavoro con i sockets... |
In questo caso, la cosa migliore è studiare prima la teoria e dopo scrivere il codice ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
pinguino (Ex-Member)
Pro
Messaggi: 172
Iscritto: 26/12/2007
|
Il fatto è che sto cercando di creare una connessione reverse, quindi il client si dovrebbe mettere in ascolto, ed il server dovrebbe contattare il client, ma dato che io (che dispongo del client) uso un router, non so come fare...
Una normale connessione client->server infatti riesco a farla...
Ultima modifica effettuata da pinguino il 10/07/2010 alle 17:44 |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da pinguino:
Il fatto è che sto cercando di creare una connessione reverse, quindi il client si dovrebbe mettere in ascolto, ed il server dovrebbe contattare il client, ma dato che io (che dispongo del client) uso un router, non so come fare...
Una normale connessione client->server infatti riesco a farla... |
chimera reverse et simila... |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Client e server sono "ruoli" che non sono fissi. Nel momento in cui il "server" tenta di contatare il "client", ha funzionalità di client ...
In ogni caso, non ho capito quale sia il problema ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
pinguino (Ex-Member)
Pro
Messaggi: 172
Iscritto: 26/12/2007
|
Bhe il problema è che quando il client si connette al server (che si trova all' interno di un router, anche se ho aperto le porte apposite per eseguire questa operazione), non riceve risposta.
Ultima modifica effettuata da pinguino il 10/07/2010 alle 23:53 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Postato originariamente da pinguino:
Bhe il problema è che quando il client si connette al server |
Sei sicuro che la connessione avvenga correttamente?
(che si trova all' interno di un router, |
Si dice "dietro" ad un router, non all'interno ...
anche se ho aperto le porte apposite per eseguire questa operazione), |
Porte ? Ne basta una ... sei sicuro che sia aperta correttamente verso l'IP privato del server?
Il client non riceve risposta? Non si connette quindi?
Devi spiegare tutto meglio e fare vedere il codice che usi, sia server sia client.
Devi parlare delle porte usate, del tipo di router che hai lato server, della configurazione effettuata sul router ... Insomma, l'errore può essere ovunque ... se vuoi risolvere devi dare tutte le informazioni del caso.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
pinguino (Ex-Member)
Pro
Messaggi: 172
Iscritto: 26/12/2007
|
Allora, il codice del server:
Codice sorgente - presumibilmente VB.NET |
Function msg(ByVal mySocket) Dim buffer(1024) As Byte Dim ByteToRead As Integer Try If mySocket.Connected Then ByteToRead = mySocket.Receive(buffer) Dim ritorno As String = Encoding.ASCII.GetString(buffer) MsgBox(ritorno.TrimEnd()) End If Catch ex As Exception Throw ex End Try End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim host As IPAddress Dim mySock As Socket Dim ip As IPHostEntry Dim ep As IPEndPoint Dim listener As TcpListener ip = Dns.GetHostEntry(Dns.GetHostName()) host = IPAddress.Parse(ip.AddressList(0).ToString()) ep = New IPEndPoint(host, 165) mySock = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) listener = New TcpListener(ep) listener.Start() While True mySock = listener.AcceptSocket() msg(mySock) End While End Sub
|
Il codice del client, che uso per inviare il messaggio "Ciao Mondo":
Codice sorgente - presumibilmente VB.NET |
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim host As IPAddress = Nothing Dim mySock As Socket = Nothing If Not IPAddress.TryParse("79.19.211.40", host) Then MessageBox.Show("Indirizzo non valido") Exit Sub End If Dim ep As IPEndPoint = New IPEndPoint(host, Integer.Parse(165)) mySock = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) mySock.Connect(ep) If mySock.Connected Then mySock.Send(Encoding.ASCII.GetBytes("Ciao Mondo")) End If End Sub
|
Il problema è che nel client, a "MySock.Connect(ep)", dopo un pò di attesa ricevo il messaggio d' errore "Impossibile stabilire la connessione. Risposta non corretta della parte connessa dopo l'intervallo di tempo oppure mancata risposta dall'host collegato 79.19.211.40:165".
Inoltre: Sono andato nella pagina del mio router Alice Gate W2>Configurazione Collegamento Lan, ed ho aggiunto un Impostazione servizio Virtual Server; con porta 165 e come IP quello del mio pc, tipo di protocollo: TCP.
Altra cosa che potrebbe essere utile: quando il server si mette in ascolto, la finestra diventa bianca e l' applicazione non risponde, forse è questo il problema per cui il client non riceve risposta...
Premetto anche che sto testando sia server che client sullo stesso pc, quindi dietro lo stesso router. Ultima modifica effettuata da pinguino il 11/07/2010 alle 12:57 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Attualmente (intendo in questo momento) il tuo server è attivo?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|