VB.net Chat

  • #1
N

n3zmo

Neues Mitglied
Themenersteller
Dabei seit
05.10.2004
Beiträge
3
Reaktionspunkte
0
Hallo zusammen. Ich habe ein kleiner Problem. Habe momentan einen Chat (Client und Server). Als erstes muss der Server gestartet werden, danach können sich die User mit einem Account anmelden und somit wird der Client gestartet.

Im Client hat es eine Textbox wo alle Nachrichten angezeigt werden und in einer Listbox werden alle user aufgelistet die online sind.

Momentan ist es so das der user etwas verschickt und alle sehen es in dieser Textbox. Der Text wird zuerst zum Server gesendet und dieser Server leitet es weiter an allen Clients.

Code:
  Public Sub Send(ByVal Data As String)
    If IsNothing(mobjClient) Then
      Dim arData(Len(Data) - 1) As Byte
      Dim intIndex As Integer

      For intIndex = 1 To Len(Data)
        arData(intIndex - 1) = Asc(Mid(Data, intIndex, 1))
      Next

      mobjSocket.BeginSend(arData, 0, Len(Data), SocketFlags.None, Nothing, Nothing)
    Else
      SyncLock mobjClient.GetStream
        Dim w As New IO.StreamWriter(mobjClient.GetStream)
        w.Write(Data)
        w.Flush()
      End SyncLock
    End If
  End Sub

Das Problem liegt jetzt beim versenden von privaten nachrichten. Momentan habe ich das Programm so ausgebaut das wen man ein user anklickt in der Listbox ein Private Chat Fenster aufgeht. wen in diesem Fenster etwas hingeingeschrieben wird und enter drückt wird diese Message zum Server verschickt. (Der Server weiss das es sich um eine Privaten Nachricht handelt), ich weiss jetzt einfach nicht wie ich es machen soll das diese Nachricht nur demjenige Client verschickt wird den ich angeklickt habe in der Listbox.

Mit diesem Code wird die Nachricht an alle Clients weitergeleitet. Hier wird ja aber diese Send Methode aufgerufen...

Code:
 Dim qn As Client
      Dim qd As DictionaryEntry
      For Each qd In Client
        qn = qd.Value
        qn.Send(Data & vbCrLf)
        qn.Send(clear & vbCrLf)
        For i = 0 To userbox.Items.Count - 1
          qn.Send(client: & userbox.Items.Item(i) & vbCrLf)
        Next
      Next

Hoffe das jemand helfen kann :)

Gruss n3zmo
 
  • #2
Am einfachsten wäre es wohl dem Chat-Text irgendeinen Zusatz wie z.B. privateUSER hinzuzufügen und bei den Clients dann zu prüfen ob die Nachricht für mich bestimmt ist oder nicht und sie dann eben anzuzeigen oder nicht.

Gruß
Christian
 
Thema:

VB.net Chat

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben