Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - VB.NET - Problema Sockets
Forum - C# / VB.NET - VB.NET - Problema Sockets

Pagine: [ 1 2 3 4 5 6 ] Precedente | Prossimo
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Segnala al moderatore
Postato alle 16:43
Sabato, 10/07/2010
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

  1. Dim host As IPAddress = IPAddress.Parse(Label1.Text)
  2.                 Dim mySock As Socket
  3.                 Dim ip As IPHostEntry
  4.                 Dim ep As IPEndPoint
  5.                 Dim listener As TcpListener
  6.  
  7.  
  8.                 ep = New IPEndPoint(host, 1752)
  9.  
  10.                 mySock = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
  11.  
  12.                 listener = New TcpListener(ep)
  13.                 listener.Start()
  14.  
  15.                 While True
  16.  
  17.                     mySock = listener.AcceptSocket()
  18.  
  19.                     ElaboraMessaggio(mySock)
  20.  
  21.                 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
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:19
Sabato, 10/07/2010
Testo quotato

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 ... :)

Testo quotato

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

Testo quotato

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à.
PM Quote
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Segnala al moderatore
Postato alle 17:38
Sabato, 10/07/2010
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
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 19:03
Sabato, 10/07/2010
Testo quotato

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...

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:35
Sabato, 10/07/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à.
PM Quote
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Segnala al moderatore
Postato alle 23:53
Sabato, 10/07/2010
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
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 9:47
Domenica, 11/07/2010
Testo quotato

Postato originariamente da pinguino:

Bhe il problema è che quando il client si connette al server



Sei sicuro che la connessione avvenga correttamente?

Testo quotato

(che si trova all' interno di un router,



Si dice "dietro" ad un router, non all'interno ...

Testo quotato


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?

Testo quotato

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à.
PM Quote
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Segnala al moderatore
Postato alle 12:49
Domenica, 11/07/2010
Allora, il codice del server:

Codice sorgente - presumibilmente VB.NET

  1. Function msg(ByVal mySocket)
  2.  
  3.         Dim buffer(1024) As Byte
  4.         Dim ByteToRead As Integer
  5.  
  6.         Try
  7.             If mySocket.Connected Then
  8.                 ByteToRead = mySocket.Receive(buffer)
  9.                 Dim ritorno As String = Encoding.ASCII.GetString(buffer)
  10.                 MsgBox(ritorno.TrimEnd())
  11.             End If
  12.         Catch ex As Exception
  13.             Throw ex
  14.         End Try
  15.     End Function
  16.  
  17.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  18.         Dim host As IPAddress
  19.         Dim mySock As Socket
  20.         Dim ip As IPHostEntry
  21.         Dim ep As IPEndPoint
  22.         Dim listener As TcpListener
  23.  
  24.         ip = Dns.GetHostEntry(Dns.GetHostName())
  25.         host = IPAddress.Parse(ip.AddressList(0).ToString())
  26.  
  27.         ep = New IPEndPoint(host, 165)
  28.  
  29.         mySock = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
  30.  
  31.         listener = New TcpListener(ep)
  32.         listener.Start()
  33.         While True
  34.             mySock = listener.AcceptSocket()
  35.             msg(mySock)
  36.         End While
  37.     End Sub



Il codice del client, che uso per inviare il messaggio "Ciao Mondo":

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         Dim host As IPAddress = Nothing
  3.         Dim mySock As Socket = Nothing
  4.  
  5.         If Not IPAddress.TryParse("79.19.211.40", host) Then
  6.             MessageBox.Show("Indirizzo non valido")
  7.             Exit Sub
  8.         End If
  9.  
  10.         Dim ep As IPEndPoint = New IPEndPoint(host, Integer.Parse(165))
  11.         mySock = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
  12.  
  13.         mySock.Connect(ep)
  14.  
  15.         If mySock.Connected Then
  16.  
  17.             mySock.Send(Encoding.ASCII.GetBytes("Ciao Mondo"))
  18.         End If
  19.     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
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 12:55
Domenica, 11/07/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à.
PM Quote
Pagine: [ 1 2 3 4 5 6 ] Precedente | Prossimo