Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports System.Data.Sql
- Imports System.IO
- Public Class ChatClient
- Public Tcp_client As System.Net.Sockets.TcpClient
- Dim Server As New ChatServer
- Dim sql As New SqlAbfrage
- Dim Auth As Integer
- Dim STW As System.IO.StreamWriter
- Dim STR As System.IO.StreamReader
- Dim IsVerbunden As Boolean = False
- Public ChatName As String
- Public ClientiD As Integer
- Public key As String = random_key(25)
- Public Event NewMessage(ByVal c As ChatClient, ByVal sNachricht As String)
- Public Event VerbindungUnterbrochen(ByVal c As ChatClient)
- Public Event Kiick(ByVal sKey As String, ByVal c As ChatClient)
- Public Function Start(ByVal TcpClient As System.Net.Sockets.TcpClient) As Boolean
- Try
- IsVerbunden = True
- Me.STR = New System.IO.StreamReader(Tcp_client.GetStream)
- Me.STW = New System.IO.StreamWriter(Tcp_client.GetStream)
- Dim read As String = STR.ReadLine
- If read.StartsWith("reg,") Then
- read = read.Replace("reg,", "")
- register(read)
- ElseIf read.StartsWith("log,") Then
- 'Password and Username are beeing vertified
- read = read.Replace("log,", "")
- Dim user As String = read.Substring(0, read.IndexOf(","))
- ChatName = user
- read = read.Replace(user & ",", "")
- Dim pw As String = read
- Dim LogIn_result As String = login(user, pw)
- Return False
- ElseIf read.StartsWith("reconnect,") Then
- 'The function is to reconnect automatically.....
- 'So I don't have to reload the login form
- read = read.Replace("reconnect,", "")
- Dim user As String = read.Substring(0, read.IndexOf(","))
- ChatName = user
- read = read.Replace(user & ",", "")
- Dim pw As String = read
- Dim LogIn_result As String = login(ChatName, pw)
- Dim tt As New System.Threading.Thread(AddressOf reader)
- tt.IsBackground = True
- tt.Start()
- Return LogIn_result
- End If
- Catch ex As Exception
- MsgBox("-Error :" & ex.Message)
- End Try
- End Function
- Private Function login(ByVal suser As String, ByVal sPw As String) As Boolean
- Me.STR = New System.IO.StreamReader(Tcp_client.GetStream)
- Me.STW = New System.IO.StreamWriter(Tcp_client.GetStream)
- Dim msg As String = sql.Login_Check(suser, sPw)
- If msg.ToLower.StartsWith("false") Then
- Return False
- ElseIf msg.ToLower.StartsWith("true") Then
- write(msg)
- Auth = msg.Remove(0, msg.IndexOf(",") + 1)
- Server.Auth.Add(ChatName, msg.Remove(0, msg.IndexOf(",") + 1))
- Return True
- End If
- End Function
- Public Function register(ByVal read As String) As String
- read = read.Remove(0, 4)
- Dim user As String = read.Substring(0, read.IndexOf(","))
- read = read.Remove(0, ChatName.IndexOf(",") + 1)
- Dim pw As String = read.Substring(0, read.IndexOf(","))
- read = read.Remove(0, read.IndexOf(",") + 1)
- Dim email As String = read.Substring(0, read.IndexOf(","))
- read = read.Remove(0, read.IndexOf(",") + 1)
- Dim hwid As String = read
- MsgBox( "reg" &user & " " & pw & " " & email & " " & hwid)
- Dim report As String = sql.reg_user(user, pw, email, 1, hwid)
- If report.StartsWith("true") Then
- ChatName = user
- Console.WriteLine(ChatName & " registered")
- write("true,Successfully registered")
- Else
- report = report.Remove(0, 6)
- Console.WriteLine(ChatName & report)
- write("false," & report)
- Return "Registration rejected"
- End If
- End Function
- Public Sub write(ByVal sText As String)
- Try
- STW.WriteLine(sText)
- STW.Flush()
- Catch ex As Exception
- Console.WriteLine("Schreiben " & ex.Message)
- RaiseEvent VerbindungUnterbrochen(Me)
- End Try
- End Sub
- Public Sub Terminate_connection(ByVal sText As String, ByVal kicked As Boolean)
- If kicked = True Then
- write(sText)
- End If
- IsVerbunden = False
- STW.Close()
- STR.Close()
- Tcp_client.Close()
- End Sub
- Sub reader(ByVal c As ChatClient, Optional ByVal Terminate As Boolean = False)
- Try
- While IsVerbunden = True
- Dim sAntwort As String = STR.ReadLine
- If sAntwort.StartsWith("alle,") Then ' alle = all
- Dim new_AS As String = sAntwort.Remove(0, 5)
- RaiseEvent NewMessage(Me, new_AS)
- Else
- Dim index As Integer = sAntwort.IndexOf(">")
- Dim order As String = sAntwort.Substring(0, 6)
- Select Case order
- Case "<kick>"
- Dim new_AS As String = sAntwort.Remove(0, index + 1)
- RaiseEvent Kiick(new_AS, Me)
- Case "<bann>"
- Case "<wisper>"
- Case "<getinfo>"
- Case Else
- Console.WriteLine("no instruction match Error:," & "(" & ChatName & ")" & sAntwort)
- End Select
- End If
- End While
- Catch ex As Exception
- Console.WriteLine("Read error: " & ex.Message)
- RaiseEvent VerbindungUnterbrochen(Me)
- End Try
- End Sub
- Function random_key(ByVal slength As Integer) As String
- Dim key_part1 As New Random
- Dim key_part2() As String = {"a", "b", "c", "d", "e", "f", "#", ";", "!", "$", "h", "lo", "xd", "Tl", "aL", "/sweet/", "Z", "t", "n", "o", "x", "Y", "~"}
- Dim counter As Integer = slength
- Dim key As String
- Do Until counter = 0
- If key_part1.Next(1, 3) = 1 Then
- key = key & key_part1.Next(0, 9)
- ElseIf key_part1.Next(1, 3) = 2 Then
- key = key & key_part2(key_part1.Next(23))
- End If
- counter -= 1
- Loop
- Return key
- End Function
- End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement