TcpListener AcceptTcpClient() ??

09/10/2009 - 13:07 von Peter Haus | Report spam
Hallo zusammen,

ich bin etwas am testen womit ich noch keinerlei Erfahrung habe.

Ich möchte an einem TCP Port horchen.

Dazu habe ich es mit dem Demo-Progràmmchen von MS versucht
http://msdn.microsoft.com/en-us/lib...lient.aspx
allerdings komme ich über erver.AcceptTcpClient() nicht hinaus.
Das Programm bleibt an dem Ort stehen und wartet. Aber auf was?
Kann mir jemand weiter helfen?


Danke und Gruss
Peter


Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports Microsoft.VisualBasic

Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim liTcp As New MyTcpListener
liTcp.Main()
End Sub


Private Class MyTcpListener

Public Sub Main()

Dim server As TcpListener
server = Nothing
Try
' Set the TcpListener on port 13000.
Dim port As Int32 = 25 ' 110
Dim localAddr As IPAddress = IPAddress.Parse("127.0.0.1")

server = New TcpListener(localAddr, port)

' Start listening for client requests.
server.Start()

' Buffer for reading data
Dim bytes(1024) As Byte
Dim data As String = Nothing

' Enter the listening loop.
While True
Console.Write("Waiting for a connection... ")

' Perform a blocking call to accept requests.
' You could also user server.AcceptSocket() here.
Dim client As TcpClient = server.AcceptTcpClient()
'?????

Console.WriteLine("Connected!")

data = Nothing

' Get a stream object for reading and writing
Dim stream As NetworkStream = client.GetStream()

Dim i As Int32

' Loop to receive all the data sent by the client.
i = stream.Read(bytes, 0, bytes.Length)
While (i <> 0)
' Translate data bytes to a ASCII string.
data =
System.Text.Encoding.ASCII.GetString(bytes, 0, i)
Console.WriteLine("Received: {0}", data)

' Process the data sent by the client.
data = data.ToUpper()
Dim msg As Byte() =
System.Text.Encoding.ASCII.GetBytes(data)

' Send back a response.
stream.Write(msg, 0, msg.Length)
Console.WriteLine("Sent: {0}", data)

i = stream.Read(bytes, 0, bytes.Length)

End While

' Shutdown and end connection
client.Close()
End While
Catch e As SocketException
Console.WriteLine("SocketException: {0}", e.ToString)
Finally
server.Stop()
End Try

Console.WriteLine(ControlChars.Cr + "Hit enter to
continue")
Console.Read()
End Sub 'Main

End Class 'MyTcpListener


End Class
 

Lesen sie die antworten

#1 Thorsten Doerfler
09/10/2009 - 13:27 | Warnen spam
Peter Haus schrieb:
Dazu habe ich es mit dem Demo-Progràmmchen von MS versucht
http://msdn.microsoft.com/en-us/lib...lient.aspx
allerdings komme ich über erver.AcceptTcpClient() nicht hinaus.
Das Programm bleibt an dem Ort stehen und wartet. Aber auf was?



Darauf, dass ein Client auf Port 25 versucht eine Verbindung zu Deinem
Server herzustellen. Steht ja auch so im Kommentar dadrüber.

' Perform a blocking call to accept requests.
' You could also user server.AcceptSocket() here.
Dim client As TcpClient = server.AcceptTcpClient()
'?????



Wenn Du jetzt im einfachsten Fall eine Verbindung via
telnet localhost 25

Zu Deinem Server herstellst, rennt Dein Programm an der Stelle weiter
und bedient die Clientverbindung.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen