Avatar billede nicklasw Nybegynder
04. maj 2006 - 21:22 Der er 18 kommentarer og
1 løsning

TcpListener bestemte ip'er

Hej.
Jeg har en TcpListener og jeg vil gerne gøre sådan at det kun er nogel bestemte ip'er der kan connecte til den.
hvordan griper jeg den an???

M.V.H Nicklas
Avatar billede nicklasw Nybegynder
04. maj 2006 - 21:25 #1
har fundet ud af det
Avatar billede nicklasw Nybegynder
04. maj 2006 - 21:29 #2
nej har jeg ikke sorry
Avatar billede arne_v Ekspert
04. maj 2006 - 21:40 #3
det nemmeste er vel at checke IP naar du har acceptet en connection og hvis den
ikke matcher good listen saa closer du connection med det samme
Avatar billede nicklasw Nybegynder
04. maj 2006 - 21:43 #4
okay prøve lige og se om jeg kan få det til at virke.
trode bare at man kunne lave den her om: Dim srv As New TcpListener(IPAddress.Any, 2275)
ændre den der IPaddress.any
Avatar billede nicklasw Nybegynder
04. maj 2006 - 21:46 #5
kan umedbart ikke finde en function som giver mig ip'en på clienten
Avatar billede arne_v Ekspert
04. maj 2006 - 22:07 #6
jeg mener at den parameter er til hvis serveren har flere netkort og flere IP
adresser at vaelge hvilken man vil lytte paa
Avatar billede nicklasw Nybegynder
04. maj 2006 - 22:11 #7
øhh vil det sige jeg ikke har mulighed for det.. forstår ikke helt hvad du mener
Avatar billede arne_v Ekspert
04. maj 2006 - 22:12 #8
kan du ikke finde den i det TcpClient objekt som du faar tilbage
fra Accept ?
Avatar billede nicklasw Nybegynder
04. maj 2006 - 22:14 #9
nej det er der jeg har ledt...
syntes jeg har kørt det hele igennem
Avatar billede arne_v Ekspert
04. maj 2006 - 22:18 #10
.Client.RemoteEndPoint i .NET 2.0
Avatar billede nicklasw Nybegynder
04. maj 2006 - 22:23 #11
jeg har desværre ikke fået vs 2005 i nu.
jeg har 2003
der er ikke nogen anden måde??
Avatar billede arne_v Ekspert
04. maj 2006 - 22:33 #12
hvis du kan leve med en Socket fremfor en TcpClient, saa kan du bruge
AcceptSocket fremfor Accept

(Socket har .RemoteEndPoint)
Avatar billede nicklasw Nybegynder
04. maj 2006 - 22:41 #13
har aldrig brugt socket før...
kan du lave et lille eksempel?
Avatar billede arne_v Ekspert
04. maj 2006 - 22:55 #14
jeg kan godt proeve at bixe noget
Avatar billede arne_v Ekspert
05. maj 2006 - 02:26 #15
TcpClient eksempel:

Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets

Class Server
    Public Shared Sub Main(ByVal args As String())
        Dim server As TcpListener = New TcpListener (IPAddress.Any, 1234)
        server.Start
        Dim client As TcpClient = server.AcceptTcpClient
        Dim rdr As StreamReader = New StreamReader (client.GetStream)
        Dim wrt As StreamWriter = New StreamWriter (client.GetStream)
        Dim line As String
        line = rdr.ReadLine
        While Not (line Is Nothing) And line <> "QUIT"
            Console.WriteLine(line)
            line = rdr.ReadLine
        End While
        rdr.Close
        wrt.Close
        client.Close
        server.Stop
    End Sub
End Class

samme eksempel med Socket:

Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text

Class Server
    Public Shared Function ReadLine(sock As Socket) As String
        Dim b(1000) As Byte
        Dim n As Integer = 0
        Do
            n += sock.Receive(b, n, b.Length - n, 0)
        Loop Until b(n-1) = 10
        return Encoding.Default.GetString(b, 0, n - 2)
    End Function
    Public Shared Sub Main(ByVal args As String())
        Dim server As TcpListener = New TcpListener (IPAddress.Any, 1234)
        server.Start
        Dim sock As Socket = server.AcceptSocket
        Dim line As String
        line = ReadLine(sock)
        While Not (line Is Nothing) And line <> "QUIT"
            Console.WriteLine(line)
            line = ReadLine(sock)
        End While
        sock.Close
        server.Stop
    End Sub
End Class
Avatar billede arne_v Ekspert
05. maj 2006 - 02:28 #16
og

        Console.WriteLine(sock.RemoteEndPoint)

udskriver det rigtige !
Avatar billede arne_v Ekspert
05. maj 2006 - 02:47 #17
bemærk at ovenstående egen ReadLine funktion ikke er production quality

den forudsætter at linie afslutning er sidst i en pakke

den forudsætter at linier ikke er længere end 1000 byte

etc.
Avatar billede nicklasw Nybegynder
05. maj 2006 - 11:55 #18
Tak...
bare læg et svar
Avatar billede arne_v Ekspert
05. maj 2006 - 13:31 #19
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester