Lan Chat ausloggen

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von beate.

    Lan Chat ausloggen

    Hallo Leute
    ich habe mir ein Lan chat erstellt :

    Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Text
    3. Public Class Form1
    4. Dim clientSocket As New System.Net.Sockets.TcpClient()
    5. Dim serverStream As NetworkStream
    6. Dim readData As String
    7. Dim infiniteCounter As Integer
    8. Private Sub Button1_Click(ByVal sender As System.Object, _
    9. ByVal e As System.EventArgs) Handles Button1.Click
    10. Dim outStream As Byte() = _
    11. System.Text.Encoding.ASCII.GetBytes(TextBox2.Text + "$")
    12. serverStream.Write(outStream, 0, outStream.Length)
    13. serverStream.Flush()
    14. End Sub
    15. Private Sub msg()
    16. If Me.InvokeRequired Then
    17. Me.Invoke(New MethodInvoker(AddressOf msg))
    18. Else
    19. TextBox1.Text = TextBox1.Text + _
    20. Environment.NewLine + " >> " + readData
    21. End If
    22. End Sub
    23. Private Sub Button2_Click(ByVal sender As System.Object, _
    24. ByVal e As System.EventArgs) Handles Button2.Click
    25. readData = "Conected to Chat Server ..."
    26. msg()
    27. clientSocket.Connect("127.0.0.1", 8888)
    28. 'Label1.Text = "Client Socket Program - Server Connected ..."
    29. serverStream = clientSocket.GetStream()
    30. Dim outStream As Byte() = _
    31. System.Text.Encoding.ASCII.GetBytes(TextBox3.Text + "$")
    32. serverStream.Write(outStream, 0, outStream.Length)
    33. serverStream.Flush()
    34. Dim ctThread As Threading.Thread = _
    35. New Threading.Thread(AddressOf getMessage)
    36. ctThread.Start()
    37. End Sub
    38. Private Sub getMessage()
    39. For infiniteCounter = 1 To 2
    40. infiniteCounter = 1
    41. serverStream = clientSocket.GetStream()
    42. Dim buffSize As Integer
    43. Dim inStream(10024) As Byte
    44. buffSize = clientSocket.ReceiveBufferSize
    45. serverStream.Read(inStream, 0, buffSize)
    46. Dim returndata As String = _
    47. System.Text.Encoding.ASCII.GetString(inStream)
    48. readData = "" + returndata
    49. msg()
    50. Next
    51. End Sub
    52. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    53. Timer1.Enabled = True
    54. End Sub
    55. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    56. If TextBox1.Text.Contains("spam") Then
    57. MsgBox("lol")
    58. End If
    59. End Sub
    60. End Class


    und der server :

    Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Text
    3. Module Module1
    4. Dim clientsList As New Hashtable
    5. Sub Main()
    6. Dim serverSocket As New TcpListener(8888)
    7. Dim clientSocket As TcpClient
    8. Dim counter As Integer
    9. serverSocket.Start()
    10. msg("Chat Server Started ....")
    11. counter = 0
    12. While (True)
    13. counter += 1
    14. clientSocket = serverSocket.AcceptTcpClient()
    15. Dim bytesFrom(10024) As Byte
    16. Dim dataFromClient As String
    17. Dim networkStream As NetworkStream = _
    18. clientSocket.GetStream()
    19. networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))
    20. dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)
    21. dataFromClient = _
    22. dataFromClient.Substring(0, dataFromClient.IndexOf("$"))
    23. clientsList(dataFromClient) = clientSocket
    24. broadcast(dataFromClient + " Joined ", dataFromClient, False)
    25. msg(dataFromClient + " Joined chat room ")
    26. Dim client As New handleClinet
    27. client.startClient(clientSocket, dataFromClient, clientsList)
    28. End While
    29. clientSocket.Close()
    30. serverSocket.Stop()
    31. msg("exit")
    32. Console.ReadLine()
    33. End Sub
    34. Sub msg(ByVal mesg As String)
    35. mesg.Trim()
    36. Console.WriteLine(" >> " + mesg)
    37. End Sub
    38. Private Sub broadcast(ByVal msg As String, _
    39. ByVal uName As String, ByVal flag As Boolean)
    40. Dim Item As DictionaryEntry
    41. For Each Item In clientsList
    42. Dim broadcastSocket As TcpClient
    43. broadcastSocket = CType(Item.Value, TcpClient)
    44. Dim broadcastStream As NetworkStream = _
    45. broadcastSocket.GetStream()
    46. Dim broadcastBytes As [Byte]()
    47. If flag = True Then
    48. broadcastBytes = Encoding.ASCII.GetBytes(uName + " says : " + msg)
    49. Else
    50. broadcastBytes = Encoding.ASCII.GetBytes(msg)
    51. End If
    52. broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length)
    53. broadcastStream.Flush()
    54. Next
    55. End Sub
    56. Public Class handleClinet
    57. Dim clientSocket As TcpClient
    58. Dim clNo As String
    59. Dim clientsList As Hashtable
    60. Public Sub startClient(ByVal inClientSocket As TcpClient, _
    61. ByVal clineNo As String, ByVal cList As Hashtable)
    62. Me.clientSocket = inClientSocket
    63. Me.clNo = clineNo
    64. Me.clientsList = cList
    65. Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf doChat)
    66. ctThread.Start()
    67. End Sub
    68. Private Sub doChat()
    69. 'Dim infiniteCounter As Integer
    70. Dim requestCount As Integer
    71. Dim bytesFrom(10024) As Byte
    72. Dim dataFromClient As String
    73. Dim sendBytes As [Byte]()
    74. Dim serverResponse As String
    75. Dim rCount As String
    76. requestCount = 0
    77. While (True)
    78. Try
    79. requestCount = requestCount + 1
    80. Dim networkStream As NetworkStream = _
    81. clientSocket.GetStream()
    82. networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))
    83. dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)
    84. dataFromClient = _
    85. dataFromClient.Substring(0, dataFromClient.IndexOf("$"))
    86. msg("From client - " + clNo + " : " + dataFromClient)
    87. rCount = Convert.ToString(requestCount)
    88. broadcast(dataFromClient, clNo, True)
    89. Catch ex As Exception
    90. MsgBox(ex.ToString)
    91. End Try
    92. End While
    93. End Sub
    94. End Class
    95. End Module



    so nun würde ich gern einen button haben, wenn ich drauf klicke das dann ausgeloggt wird und nicht gleich der server stirbt xD

    danke für antworten JEDER art

    xD Ich kann Kritik ab :D


    Edit : Habe ein wenig rumgespielt weil ich meine schwester ärgern will deshalb das mit textbox1.text.contains("spam"9