Hallo zusammen,
ich habe mich für ein Projekt dazu entschieden, die Daten (Einfache strings) per TCP zu übertragen.
Prinzipiell habe ich mit Hilfe der Tut´s einen Multiserver gebaut. Das funktioniert auch soweit. (Denke ich )
Die Client´s können sich einloggen und eine prinzipielle Kommunikation (Reader/Writer) funktioniert.
Ich habe nun 2 Punkte, bei denen mir irgendwie keine Lösung einfällt.
Zum einen möchte ich dass der Client sich unter einem bestimmten Namen am Server anmeldet. Kein Passwort oder so.
Dazu sende ich als ersten den Login Namen an den Server, dieser soll dann prüfen ob der Name in der Liste ist.(Funktioniert)
Wenn aber nicht, möchte ich dass die Verbindung gekappt wird bzw. gar nicht erst in die Überwachung aufgenommen.
Wenn ich nun die Verbindung nicht annehme, wartet aber der Client auf eine Bestätigung. Aber irgendwie bekomme ich es nicht hin dort ein Timeout zu machen. Das Programm scheint beim streamreader hängen zu bleiben, vermutlich weil ich ja die Gegenstelle nicht weiter aufgebaut habe.
Ich hoffe ihr versteht mein Problem und habt da einen Ansatz für mich.
Besten Dank
Kiter20
Server Code
Client Code
ich habe mich für ein Projekt dazu entschieden, die Daten (Einfache strings) per TCP zu übertragen.
Prinzipiell habe ich mit Hilfe der Tut´s einen Multiserver gebaut. Das funktioniert auch soweit. (Denke ich )
Die Client´s können sich einloggen und eine prinzipielle Kommunikation (Reader/Writer) funktioniert.
Ich habe nun 2 Punkte, bei denen mir irgendwie keine Lösung einfällt.
Zum einen möchte ich dass der Client sich unter einem bestimmten Namen am Server anmeldet. Kein Passwort oder so.
Dazu sende ich als ersten den Login Namen an den Server, dieser soll dann prüfen ob der Name in der Liste ist.(Funktioniert)
Wenn aber nicht, möchte ich dass die Verbindung gekappt wird bzw. gar nicht erst in die Überwachung aufgenommen.
Wenn ich nun die Verbindung nicht annehme, wartet aber der Client auf eine Bestätigung. Aber irgendwie bekomme ich es nicht hin dort ein Timeout zu machen. Das Programm scheint beim streamreader hängen zu bleiben, vermutlich weil ich ja die Gegenstelle nicht weiter aufgebaut habe.
Ich hoffe ihr versteht mein Problem und habt da einen Ansatz für mich.
Besten Dank
Kiter20
Server Code
VB.NET-Quellcode
- client = server.AcceptTcpClient
- Dim _IP As IPAddress = CType(client.Client.RemoteEndPoint, IPEndPoint).Address
- Dim _Client As New Connection
- With _Client
- .stream = client.GetStream
- .streamr = New StreamReader(_Client.stream)
- .streamw = New StreamWriter(_Client.stream)
- .Machine = _Client.streamr.ReadLine.Split(CChar("-"))(1).Replace(" ", "")
- .IP = _IP.ToString
- End With
- If _Client.Machine = _GetValue("Login1", "") Or _Client.Machine = _GetValue("Login2", "") Then
- _Client.streamw.Write("Connected")
- _Client.streamw.Flush()
- _Connections.Add(_Client)
- Dim _Watch As New Threading.Thread(AddressOf ListenToConnection) 'Neuer Thread, der die Connection abhört wird erstellt
- _Watch.Start(_Client)
- Else
- 'client.Close()
- End If
Client Code
VB.NET-Quellcode
- If My.Computer.Network.Ping(ip) Then
- ' Try
- client.Connect(ip, port) 'Client verbindet sich mit IP: 192.168.111.17 und Port 4000
- If client.Connected Then
- Deklare_Streams() ' Sub Deklare_Streams()
- ' login()
- ' Do Until _Stopwatch.ElapsedMilliseconds > 5000
- ' Application.DoEvents()
- streamw.WriteLine("Login-" & txtLogin.Text)
- streamw.Flush()
- 'MessageBox.Show(streamr.ReadLine())
- ' _Delay(2)
- If streamr.ReadLine = "Connected" Then
- If t.IsAlive Then
- t.Resume()
- Else
- t.Start()
- End If
- Else
- client.Close()
- End If
- 'Loop
- '_Stopwatch.Stop()
- Else
- MessageBox.Show("Verbindung konnte nicht mit " & ip & " aufgebaut werden!")
- End If
- ' Catch ex As Exception
- 'MessageBox.Show("Verbindung konnte nicht mit " & ip & " aufgebaut werden!")
- 'End Try
- Else
- MessageBox.Show("Verbidnung mit " & ip & " ist nicht erreichbar!")
- End If
"Mann" lernt mit seinen Projekten.