Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    vb.net 2005 tcpListener accettare connessioni SOLAMENTE da un ip

    Salve gente!

    Utilizzando le classi TcpListener e TcpClient (e guardando gli esempi nell'help in linea di Visual Studio 2005) sono riuscito a realizzare un server tcp che funziona piuttosto bene.

    Adesso vorrei fare in modo che accetti le connessioni soltanto da un singolo indirizzo ip (che stabilisco io).

    Qualcuno di voi sa come fare ciò?
    Dovrebbe essere una cosa semplice ma guardando l'help non mi so raccapezzare...
    Grazie per qualsiasi suggerimento!

    Zingaro.
    Make Pazziata-tàààà NOT war!

  2. #2
    UP!
    Make Pazziata-tàààà NOT war!

  3. #3
    Mi rispondo da solo prendendo spunto da qui:

    http://www.codeproject.com/managedcp...select=1406377

    Public Shared Function IPAndPortFromTCPClient(ByVal theClient As TcpClient) As _
    sAddressInfo
    'Dim pi As PropertyInfo = AESTypes.NetworkStream_t.GetProperty("Socket", _
    BindingFlags.NonPublic Or BindingFlags.Instance)
    Dim pi As Reflection.PropertyInfo = theClient.GetStream.GetType.GetProperty("Socket", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)

    Dim theSocket As Socket = pi.GetValue(theClient.GetStream, Nothing)
    Dim theEnd As EndPoint = theSocket.RemoteEndPoint
    Dim theAddress As String = theEnd.ToString
    Dim theInfo As New sAddressInfo

    theInfo.m_IP = theAddress.Split(":")(0)
    theInfo.m_Port = theAddress.Split(":")(1)

    Return theInfo
    End Function

    e poi all'interno della mia funzione che effettua la connessione ho messo:
    [...]
    Dim client As TcpClient = server.AcceptTcpClient()
    'Connesso!
    Dim InfoClient As sAddressInfo = IPAndPortFromTCPClient(client)
    'verifichiamo che la connessione provenga dall'ip sIndirizzoIPRemoto

    While (Strings.StrComp(InfoClient.m_IP, sIndirizzoIPRemoto, _ CompareMethod.Text) <> 0)
    'se la connessione proviene da un altro ip la ignoriamo e restiamo in
    ' attesa di un'altra connessione
    Try
    client = server.AcceptTcpClient()
    InfoClient = IPAndPortFromTCPClient(client)
    Catch excv As SocketException
    MsgBox("SocketException: " & excv.ToString, MsgBoxStyle.Critical)
    End Try
    System.Threading.Thread.Sleep(1)
    'inseriamo una pausa di 1 millisecondo alla fine di ogni ciclo while per
    ' evitare che questo thread occupi troppo la cpu
    End While

    ' adesso possiamo leggere e analizzare lo stream di dati
    ' Get a stream object for reading and writing
    Dim stream As NetworkStream = client.GetStream()
    Dim i As Int32
    ' Enter the listening loop.
    [...]

    Spero che possa servire ad altri.

    Make Pazziata-tàààà NOT war!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.