TCP Client kann keine Verbindung zum Server aufbauen!
Also, folgendes Problem :
Edit: Port "8000" ist schon freigegeben!
1. Mein Freund startet den Server
2. Ich versuche auf seine IP zu Verbinden (wieistmeineip.de)
3. Der Client bringt die Meldung "Konnte nicht zum Server verbinden"
warum?
Code Server:
VB.NET-Quellcode
- Imports System.Net.Sockets
- Imports System.IO
- Imports System.Net
- Module Module1
- Private server As TcpListener
- Private client As New TcpClient
- Private ipendpoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 8000) ' eingestellt ist port 8000. dieser muss ggf. freigegeben sein!
- Private list As New List(Of Connection)
- Private Structure Connection
- Dim stream As NetworkStream
- Dim streamw As StreamWriter
- Dim streamr As StreamReader
- Dim nick As String ' natürlich optional, aber für die identifikation des clients empfehlenswert.
- End Structure
- Sub Main()
- Console.Title = "GAPLG v1.0 | Get and play lan games! | Server"
- Console.WriteLine("Wichtig, der Port 8000 muss freigegeben sein!")
- Console.WriteLine("")
- Console.WriteLine("Server ist an!")
- Console.WriteLine("")
- server = New TcpListener(ipendpoint)
- server.Start()
- While True ' wir warten auf eine neue verbindung...
- client = server.AcceptTcpClient
- Dim c As New Connection ' und erstellen für die neue verbindung eine neue connection...
- c.stream = client.GetStream
- c.streamr = New StreamReader(c.stream)
- c.streamw = New StreamWriter(c.stream)
- c.nick = c.streamr.ReadLine ' falls das mit dem nick nicht gewünscht, auch diese zeile entfernen.
- list.Add(c) ' und fügen sie der liste der clients hinzu.
- Console.WriteLine(c.nick & " ist beigetreten!")
- ' falls alle anderen das auch lesen sollen können, an alle clients weiterleiten.
- Dim t As New Threading.Thread(AddressOf ListenToConnection)
- t.Start(c)
- End While
- End Sub
- Private Sub ListenToConnection(ByVal con As Connection)
- Do
- Try
- Dim tmp As String = con.streamr.ReadLine ' warten, bis etwas empfangen wird...
- Console.WriteLine(con.nick & ": " & tmp)
- For Each c As Connection In list ' an alle clients weitersenden.
- Try
- c.streamw.WriteLine(con.nick & ": " & tmp)
- c.streamw.Flush()
- Catch
- End Try
- Next
- Catch ' die aktuelle überwachte verbindung hat sich wohl verabschiedet.
- list.Remove(con)
- Console.WriteLine(con.nick & " hat verlassen!")
- Exit Do
- End Try
- Loop
- End Sub
- End Module
Code Client:
VB.NET-Quellcode
- Imports System.Net.Sockets
- Imports System.IO
- Public Class Form1
- Private stream As NetworkStream
- Private streamw As StreamWriter
- Private streamr As StreamReader
- Private client As New TcpClient
- Private t As New Threading.Thread(AddressOf Listen)
- Private Delegate Sub DAddItem(ByVal s As String)
- Private nick As String = "unknown"
- Private Sub AddItem(ByVal s As String)
- ListBox1.Items.Add(s)
- End Sub
- Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
- Try
- client.Connect(ip.text, 8000) ' hier die ip des servers eintragen.
- ' da dieser beim testen wohl lokal läuft, hier die loopback-ip 127.0.0.1.
- If client.Connected Then
- stream = client.GetStream
- streamw = New StreamWriter(stream)
- streamr = New StreamReader(stream)
- streamw.WriteLine(nick) ' das ist optional.
- streamw.Flush()
- t.Start()
- Else
- MessageBox.Show("Verbindung zum Server nicht möglich!")
- Application.Exit()
- End If
- Catch ex As Exception
- MessageBox.Show("Verbindung zum Server nicht möglich!")
- Application.Exit()
- End Try
- End Sub
- Private Sub Listen()
- While client.Connected
- Try
- Me.Invoke(New DAddItem(AddressOf AddItem), streamr.ReadLine)
- Catch
- MessageBox.Show("Verbindung zum Server nicht möglich!")
- Application.Exit()
- End Try
- End While
- End Sub
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- streamw.WriteLine(TextBox1.Text)
- streamw.Flush()
- TextBox1.Clear()
- End Sub
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- ip.Hide()
- nick = InputBox("Nickname: ", "Name nehmen!", "unknown")
- End Sub
- End Class
Bitte ist wichtig!
Wollen Lan-Party mit Freunden machen und Hamachi geht bei einem net !!!!
Edit by der_Kurt:
* Thema verschoben *
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „der_Kurt“ ()