Oppure

Loading
10/07/10 14:43
pinguino
Salve. Da tempo cerco di creare un applicazione che si metta in ascolto sulla porta del mio router n. 1752.


                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 10/07/10 14:53
aaa
10/07/10 15:19
nessuno
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à.
10/07/10 15:38
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...
Ultima modifica effettuata da pinguino 10/07/10 15:44
aaa
10/07/10 17:03
HeDo
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...
aaa
10/07/10 18:35
nessuno
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à.
10/07/10 21:53
pinguino
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 10/07/10 21:53
aaa
11/07/10 7:47
nessuno
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?

non riceve risposta.


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à.
11/07/10 10:49
pinguino
Allora, il codice del server:

    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":

    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 11/07/10 10:57
aaa