Hallo,
das hier basiert auf Malischh´s großem TCP- und UDP-Tutorial. Ich poste dies bewusst in einem Extra-Thread. Es gab einige Unklarheiten, und es fehlte ein funktionierendes simples Beispiel für eine Verbindung.
Achtung: Für faule oder alle, die es nicht verstehen/hinbekommen: Unten sind zwei Beispielprojektmappen zum Download.
Also habe ich eins gemacht. Sowohl Server als auch Client arbeiten in einem separaten Thread, sodass die Anwendung absolut stabil läuft. Ausnahmsweise bekommt ihr hier mal fast reinen Copy/Paste-Code geliefert, ich empfehle euch aber, euch den Code genau anzusehen, damit ihr ihn auch begreift.
Bei beiden handelt es sich um Windows-Forms-Anwendungen.
1. Der Server.
Benötigte Controls: Ein Button "Button1" mit Beschriftung "Start"
1. Der Client.
Benötigte Controls:
- Ein Button "Button1" zum Starten des Servers. Beschriftung "Start"
- Ein Button "Button2" zum Senden
- Eine Textbox für die Eingabe der IP
- Eine Textbox für die Eingabe des Ports, Default-Text ist 8000.
Testen: Geht sogar lokal. Geht auf wieistmeineip.de, öffnet den Server und drückt auf "Start". Öffnet den Client und kopiert eure IP in Textbox1. Den Port könnt ihr bei 8000 lassen, wenn ihr ihn aber anpassen solltet, achtet darauf, dass die Ports identisch sind! So weit so gut - startet den Client mit einem Klick auf "Start". Drückt anschließend auf "Senden" und lasst den Text der Inputbox bei "Hallo". Nun sollte sich der Server mit der Msgbox "Auch Hallo" melden - es hat geklappt, hurra.
Hier beide Beispielprojektdateien.
Beispielprojekte.zip
Bei Routern muss evt. der Port freigegeben werden. Hoffe ihr versteht alles und könnt damit etwas anfangen, hab´s so easy wie möglich gemacht.
Lg,
kevin89
das hier basiert auf Malischh´s großem TCP- und UDP-Tutorial. Ich poste dies bewusst in einem Extra-Thread. Es gab einige Unklarheiten, und es fehlte ein funktionierendes simples Beispiel für eine Verbindung.
Achtung: Für faule oder alle, die es nicht verstehen/hinbekommen: Unten sind zwei Beispielprojektmappen zum Download.
Also habe ich eins gemacht. Sowohl Server als auch Client arbeiten in einem separaten Thread, sodass die Anwendung absolut stabil läuft. Ausnahmsweise bekommt ihr hier mal fast reinen Copy/Paste-Code geliefert, ich empfehle euch aber, euch den Code genau anzusehen, damit ihr ihn auch begreift.
Bei beiden handelt es sich um Windows-Forms-Anwendungen.
1. Der Server.
Benötigte Controls: Ein Button "Button1" mit Beschriftung "Start"
VB.NET-Quellcode
- Imports System.Net.Sockets
- Imports System.IO
- Imports System.Net
- Public Class Form1
- Dim stream As NetworkStream
- Dim streamw As StreamWriter
- Dim streamr As StreamReader
- Dim server As TcpListener
- Dim client As New TcpClient
- Dim ipendpoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 8000)
- Dim t As New Threading.Thread(AddressOf Main)
- Sub Main()
- Try
- server = New TcpListener(ipendpoint)
- server.Start()
- client = server.AcceptTcpClient
- stream = client.GetStream
- streamr = New StreamReader(stream)
- streamw = New StreamWriter(stream)
- While True
- Select Case streamr.ReadLine
- Case "Hallo"
- MessageBox.Show("Auch hallo!")
- End Select
- End While
- Catch
- MessageBox.Show("Socket-Fehler.")
- Button1.Text = "Start"
- End Try
- End Sub
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- If Button1.Text = "Start" Then
- t.Start()
- Button1.Text = "Stop"
- Else
- client.Close()
- streamr.Close()
- streamw.Close()
- stream.Close()
- Button1.Text = "Start"
- End If
- End Sub
- End Class
1. Der Client.
Benötigte Controls:
- Ein Button "Button1" zum Starten des Servers. Beschriftung "Start"
- Ein Button "Button2" zum Senden
- Eine Textbox für die Eingabe der IP
- Eine Textbox für die Eingabe des Ports, Default-Text ist 8000.
VB.NET-Quellcode
- Imports System.Net.Sockets
- Imports System.IO
- Public Class Form1
- Dim stream As NetworkStream
- Dim streamw As StreamWriter
- Dim streamr As StreamReader
- Dim client As New TcpClient
- Dim t As New Threading.Thread(AddressOf Listen)
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- If Button1.Text = "Start" Then
- Try
- client.Connect(TextBox1.Text, TextBox2.Text)
- If client.Connected Then
- Button1.Text = "Stop"
- stream = client.GetStream
- streamw = New StreamWriter(stream)
- streamr = New StreamReader(stream)
- t.Start()
- Else
- MessageBox.Show("Verbindung mit " & TextBox1.Text & " nicht möglich!")
- End If
- Catch
- MessageBox.Show("Verbindung mit " & TextBox1.Text & " nicht möglich!")
- End Try
- Else
- Try
- client.Close()
- stream.Close()
- streamw.Close()
- streamr.Close()
- Catch
- Finally
- Button1.Text = "Start"
- End Try
- End If
- End Sub
- Sub Listen()
- While client.Connected
- Dim befehl As String = Receive()
- If befehl <> "" Then
- MsgBox(befehl)
- End If
- End While
- End Sub
- Sub Send(ByVal stext As String)
- streamw.WriteLine(stext)
- streamw.Flush()
- End Sub
- Function Receive() As String
- Try
- Return streamr.ReadLine
- Catch
- Return ""
- End Try
- End Function
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- Dim befehl As String = InputBox("Befehl:", "Senden", "Hallo")
- Send(befehl)
- End Sub
- End Class
Testen: Geht sogar lokal. Geht auf wieistmeineip.de, öffnet den Server und drückt auf "Start". Öffnet den Client und kopiert eure IP in Textbox1. Den Port könnt ihr bei 8000 lassen, wenn ihr ihn aber anpassen solltet, achtet darauf, dass die Ports identisch sind! So weit so gut - startet den Client mit einem Klick auf "Start". Drückt anschließend auf "Senden" und lasst den Text der Inputbox bei "Hallo". Nun sollte sich der Server mit der Msgbox "Auch Hallo" melden - es hat geklappt, hurra.
Hier beide Beispielprojektdateien.
Beispielprojekte.zip
Bei Routern muss evt. der Port freigegeben werden. Hoffe ihr versteht alles und könnt damit etwas anfangen, hab´s so easy wie möglich gemacht.
Lg,
kevin89
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kevin89“ ()