Mini Chat

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von powerprogger.

    Hey, ich wollte mal nen kleinen Chat in VB.NET basteln.
    Doch alle Tuts ect. sprechen immer wieder von Winsock.
    Doch Winsock-Controls gibbet in VB.NET nicht.
    Also wollte ich euch mal nach nem tu für nen Chat in VB.NET fragen bzw könnt ihr vilelleicht nen groben Sourcecode posten.

    MfG Metal Freak.
    Ich habe folgenden Code für nen Chat mit mehreren Clients via Winsocks, aber in VB.NET funktioniert er nicht, nur in VB6 ._. Kann mir den jemand so umschreiben dass er in VB.NET funktioniert?

    VB.NET-Quellcode

    1. Option Explicit
    2. Dim boolServer As Boolean
    3. Private Sub cmdClient_Click()
    4. ' Als Client identifizieren und die Möglichkeiten vorgeben
    5. boolServer = False
    6. cmdServer.Enabled = False
    7. cmdClient.Enabled = False
    8. cmdGo.Enabled = True
    9. End Sub
    10. Private Sub cmdGo_Click()
    11. Dim I As Integer
    12. ' Loge ich mich gerade ein ?
    13. If cmdGo.Caption = "Go" Then
    14. ' Erst mal die Einstellungen eifrieren
    15. txtNick.Enabled = False
    16. txtHostIP.Enabled = False
    17. txtPort.Enabled = False
    18. cmdGo.Caption = "Stop"
    19. ' Bin ich Server ?
    20. If boolServer = True Then
    21. WinSock(0).LocalPort = txtPort.Text
    22. WinSock(0).Listen
    23. stBar.SimpleText = "Status: Listening"
    24. Else
    25. WinSock(0).RemotePort = txtPort.Text
    26. WinSock(0).RemoteHost = txtHostIP.Text
    27. WinSock(0).Connect
    28. stBar.SimpleText = "Status: Connecting to " & _
    29. txtHostIP.Text & ":" & txtPort.Text
    30. End If
    31. ' Ich logge mich gerade aus
    32. Else
    33. ' Bin ich Server ?
    34. If boolServer = True Then
    35. ' Erst mal alle Verbindungen schließen und unnötige
    36. ' WinSocks entladen
    37. For I = 1 To WinSock.Count - 1
    38. WinSock(I).Close
    39. Unload WinSock(I)
    40. Next I
    41. Else
    42. WinSock(0).Close
    43. End If
    44. ' Jetzt wieder alles in den Urzustand versetzen
    45. txtNick.Enabled = True
    46. txtPort.Enabled = True
    47. txtHostIP.Enabled = True
    48. cmdGo.Caption = "Go"
    49. cmdGo.Enabled = False
    50. cmdClient.Enabled = True
    51. cmdServer.Enabled = True
    52. stBar.SimpleText = "Status: Offline"
    53. End If
    54. End Sub
    55. Private Sub cmdSend_Click()
    56. Dim strMessage As String
    57. strMessage = "{" & txtNick.Text & "}:" & rtfSend.Text
    58. ' Bin ich Server
    59. If boolServer = True Then
    60. SendMessage strMessage
    61. rftReceive.Text = rftReceive.Text & vbCrLf & strMessage
    62. Else
    63. If WinSock(0).State = 7 Then WinSock(0).SendData strMessage
    64. End If
    65. rtfSend.Text = ""
    66. End Sub
    67. Private Sub cmdServer_Click()
    68. ' Erst mal die Buttons ändern
    69. cmdClient.Enabled = False
    70. cmdGo.Enabled = True
    71. cmdServer.Enabled = False
    72. ' Jetzt bin ich Server
    73. boolServer = True
    74. End Sub
    75. Private Sub WinSock_Close(Index As Integer)
    76. If Index = "0" Then
    77. stBar.SimpleText = "Status: Offline"
    78. Else
    79. stBar = "Status: Verbunden mit " & WinSock.Count - 1 & " " & _
    80. "Client(s)."
    81. End If
    82. End Sub
    83. Private Sub WinSock_Connect(Index As Integer)
    84. ' Jetzt soll man ja wissen, daß man drinnen ist
    85. stBar.SimpleText = "Status: Connected to " & txtHostIP.Text & ":" _
    86. & txtPort.Text
    87. End Sub
    88. Private Sub WinSock_ConnectionRequest(Index As Integer, ByVal _
    89. requestID As Long)
    90. ' Ein neues WinSock laden und die Verbindung übernehmen lassen
    91. Dim intZähler As Integer
    92. intZähler = WinSock.Count
    93. Load WinSock(intZähler)
    94. WinSock(intZähler).LocalPort = txtPort.Text
    95. WinSock(intZähler).Accept requestID
    96. stBar.SimpleText = "Status: Verbunden mit " & WinSock.Count - 1 & _
    97. " Client(s)."
    98. End Sub
    99. Private Sub WinSock_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    100. Dim strMessage As String
    101. ' Nachricht holen
    102. WinSock(Index).GetData strMessage
    103. ' Bin ich der Server? Dann weiterleiten
    104. If boolServer = True Then SendMessage strMessage
    105. ' Ich mags auch sehen
    106. rftReceive.Text = rftReceive.Text & vbCrLf & strMessage
    107. End Sub
    108. Private Sub SendMessage(Message As String)
    109. Dim I As Integer
    110. ' Weiterleiten an die anderen clients
    111. For I = 1 To WinSock.Count - 1
    112. ' Erst mal schauen ob die Verbindung steht
    113. If WinSock(I).State = 7 Then WinSock(I).SendData Message
    114. Next I
    115. End Sub
    116. Private Sub WinSock_Error(Index As Integer, ByVal Number As Integer, _
    117. Description As String, ByVal Scode As Long, ByVal Source As String, _
    118. ByVal HelpFile As String, ByVal HelpContext As Long, _
    119. CancelDisplay As Boolean)
    120. If Index < 0 Then
    121. WinSock(Index).Close
    122. Unload WinSock(Index)
    123. rftReceive.Text = rftReceive.Text & vbCrLf & "{System}: " & _
    124. "Verbindung zu einem Host abgebrochen."
    125. Else
    126. WinSock(Index).Close
    127. rftReceive.Text = rftReceive.Text & vbCrLf & "{System}: Dich " & _
    128. "hats gerade gegrillt."
    129. cmdServer.Enabled = True
    130. cmdClient.Enabled = True
    131. cmdGo.Caption = "Go"
    132. cmdGo.Enabled = False
    133. stBar.SimpleText = "Status: Offline wegen Verbindungsproblem."
    134. End If
    135. End Sub



    Edit by Mad Andy:
    VB-Tag eingefügt!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mad Andy“ ()

    Ganz ehrlich: ich glaub nicht, dass jemand hier lust hat dir das zu übersetzen ...
    Ich hab dir gesagt, wo du nachschaun kannst, wie du Sockets in .net verwendest - wenn du zu faul bist zu suchen, bist du selbst schuld.


    so long ..
    Andy
    also ich habs mit winsock unter net hinbekommen war zwar n bischen ein krampf aber hat im endeffekt funktioniert.

    Du kannst dir winsock runterladen dann in der registry registrieren und dann kannst du es in die toolbox von visual studio packen und benutzen.
    das is mal eine coole Sache dieser SourceCode. Nur hab mal derartig wenig Ahnung, dass ich nicht weiß, welche und vor allem wie viele von den benötigten Bausteinen ich benötige und welche Caption die haben müssen. Kann mir da vlt einer helfen???

    EDIT: Es muss an dem Code noch einiges verändert werden. Ich weiß nicht ob jemand meine Lösung dafür haben möchte... aber auf verlangen würde ich meinen Code hier einpflegen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „powerprogger“ ()