Net send Meldung in VB abfangen

Hallo. Kann man eingehende Meldungen vom Nachrichtendienst mit Visual Basic abfangen. Danach müsste der Inhalt (Absender und Text) ausgewertet werden und danach sollte das Fenster mit der Meldung vom Nachrichtendienst wieder geschlossen werden. Das ist für ein kleines Chat-Programm.
Danke

Hans

Hallo Hans,

sehe ich das richtig das du ein Chat programm tippseln willst? Warum greifst du dann nicht zum Winsock Steuerelement und realisierst es damit?

VLG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Hans,

sehe ich das richtig das du ein Chat programm tippseln willst?
Warum greifst du dann nicht zum Winsock Steuerelement und
realisierst es damit?

VLG Alex

Hallo,
ja, so was soll es werden. Und wie realisiere ich das mit dem Winsock Steuerelement? Gibt es dafür vielleicht irgendwo eine ausführliche Hilfe?

Hans

Hallo Hans,

soll dieser „Chat“ über das Internet oder nur im lokalen Netzwerk erfolgen?
Sollen an diesem Chat nur eine Person oder mehrere daran teilnehmen?
Bin übrigens auch gerade dabei einen Chat zu entwickeln. *.exe basierend :smile: Hab da aber auch so meine probleme mit :S

VLG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,
am besten wäre es, wenn das über Internet (also IP) und auch im lokalen Netzwerk (Computername oder IP) funktionieren würde.
Eigentlich dachte ich bisher, dass nur zwei Personen dabei miteinander Chatten sollen, wobei natürlich mehr Leute auch interessant wären (aber mit einem zweier-Chat gebe ich mich zufrieden).
Hans

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi,
habe vor kurzem ein chat programm geschrieben: indem ich zwei textdateien hatte die von den pcs immer ausgelesen und beschrieben wurden. Das ist ziemlich einfach, wenn du das fürs netzwerk brauchst.
sebastian

Hallo Hans,

also zu deiner Problematik. Im Netzwerk eignet sich ein UDP Chat und im anderen Falle , kommunizierst du anhand der IP uber das TCP / IP Protocoll. Ob dies Im Netzwerk geht, muesste man probieren. Aber ich denke mal schon. Ich tippsle dir hier mal schnell das Grundgerüst für beide. Du musst sie dann nur deinen Bedürfnissen anpassen.

UDP Chat:

Private Sub Command1_Click()
on error goto fehler
if command1.caption=„Connect“ then
with winsock1
.remotehost=text3.text
.remoteport = text4.text
.bind text13.value
end with
command1.caption=„Disconnect“
else
winsock1.close
end if
exit sub
fehler:
msgbox err.description,16,„Problem“
exit sub: resume next
end sub

private sub text1_Change()
winsock1.senddata text1.text
end sub

private sub winsock1_DataArrival(byval bytestotal as long)
dim s$
winsock1.getdata s
text2.text=s
end sub

So das waere ein einfacher UDP chat für 2 Rechner im Netzwerk

Auf die Oberfläche pflasterst du 5 Textfelder, sowie eine Schaltflaeche und das Winsock Steuerelement.
Die protocoll Eigenschaft des Winsock Steuerelemts stellst du auf UDP
Das Programm wird nur functionieren wenn beide rechner die Schaltfläche betaetigt haben! Die Bindung an den Port erfolgt erst zu dem Zeitpunkt. Du kannst dies natürlich auch deinen bedürfnissen anpassen. und es auch so mit leichtigkeit abaendern das an diesem chat mehrere Rechner dran teilnehmen koennen. Dann bastel einen server draus und einen Clienten. den Aufbau kannst du dem Grundgerüst entnehmen :smile:

text1 = text der gesendet werden soll…
text2 = text der dir geschrieben wird…
text 3 = welchen Rechner willst du im Netzwerk schreiben
text4 = Über welchen Port soll kommuniziert werden. ( Diesen kannst du auch fest beim start vergeben)
text5 = Lokale Anschluss( Auch diesen kannst du fest vergeben)

Nun zu einen TCP / IP Chat wo mehrere Chatter dran teilnehmen können.
Du brauchst dazu einen Clienten und einen Server. Der Server muss immer gestartet sein. Dann kann sich der Client an dem Server anmelden.
In diesem Beispiel kannst du je nach klickem dem Chat als Client oder als Server laufen lassen.

Hier der Quelltext :smile:

Private blnConnected As Boolean
Private strNick As String
Private blnServer As Boolean
Private blnSendCompleted As Boolean

Private Sub Senden(strData As String, Optional Index As Integer = 0)
blnSendCompleted = False
If wsckChat(Index).State = sckConnected Then
wsckChat(Index).SendData strData
Do Until blnSendCompleted
DoEvents
Loop
End If
End Sub

Private Sub AddMessage(strMessage As String, strSender As String)
txtChat.Text = txtChat.Text & _
„(“ & Trim(strSender) & ") " & _
strMessage & vbCrLf
txtChat.SelStart = Len(txtChat.Text)
End Sub

Private Sub ForwardMsg(strData As String, intExcludeIndex As Integer)
Dim intCounter As Integer
If wsckChat.Count > 1 Then
For intCounter = 1 To wsckChat.Count - 1
If intCounter intExcludeIndex Then
Senden strData, intCounter
End If
Next
End If
End Sub

Private Sub EnableButtons()
lblBez(0).Enabled = Not blnConnected
txtName.Enabled = Not blnConnected
cmdListen.Enabled = Not blnConnected
cmdConnect.Enabled = Not blnConnected
cmdCancel.Enabled = blnConnected
lblBez(1).Enabled = blnConnected
txtNachricht.Enabled = blnConnected
cmdSend.Enabled = blnConnected
txtChat.Enabled = blnConnected
txtChat.Text = „“
End Sub

Private Function GetNextFreeIndex() As Integer
Dim intCounter As Integer
For intCounter = 1 To wsckChat.Count - 1
If wsckChat(intCounter).State = sckClosed Then
GetNextFreeIndex = intCounter
Exit Function
End If
Next
GetNextFreeIndex = wsckChat.Count
Load wsckChat(GetNextFreeIndex)
End Function

Private Sub cmdBeenden_Click()
Unload Me
Set frmMain = Nothing
End
End Sub

Private Sub cmdCancel_Click()
Dim Counter As Integer
For Counter = 0 To wsckChat.Count - 1
If wsckChat(Counter).State sckClosed Then
wsckChat(Counter).Close
If Counter >= 1 Then Unload wsckChat(Counter)
End If
Next
blnConnected = False
blnServer = False
EnableButtons
End Sub

Private Sub cmdConnect_Click()
Dim strRemoteComputer As String
If Trim(txtName.Text) = „“ Then txtName.Text = „no name“
strNick = Left(txtName & Space(50), 50)
blnConnected = True
blnServer = False
EnableButtons
strRemoteComputer = InputBox(„Mit welchem Computer wollen Sie eine Verbindung aufnehmen?“, „Connect“, „127.0.0.1“)
If Trim(strRemoteComputer) = „“ Then
blnConnected = False
blnServer = False
EnableButtons
Exit Sub
End If
wsckChat(0).RemotePort = 12123
wsckChat(0).RemoteHost = strRemoteComputer
wsckChat(0).Connect
End Sub

Private Sub cmdListen_Click()
If Trim(txtName.Text) = „“ Then txtName.Text = „no name“
strNick = Left(txtName & Space(50), 50)
blnConnected = True
blnServer = True
EnableButtons
wsckChat(0).LocalPort = 12123
wsckChat(0).Listen
End Sub

Private Sub cmdSend_Click()
Dim strMessage As String
If Trim(txtNachricht.Text) „“ Then
strMessage = „0“ & strNick & _
txtNachricht.Text
If blnServer Then
ForwardMsg strMessage, 0
Else
Senden strMessage, 0
End If
AddMessage txtNachricht.Text, strNick
txtNachricht.Text = „“
End If
End Sub

Private Sub Form_Load()
blnServer = False
blnSendCompleted = True
End Sub

Private Sub wsckChat_Close(Index As Integer)
If blnServer Then
If Index = 0 Then
blnConnected = False
blnServer = False
EnableButtons
Else
AddMessage „Der User " & wsckChat(Index).Tag & " hat den Chat verlassen“, „-system-“
ForwardMsg Left("-system-" & Space(50), 50) & _
„Der User " & wsckChat(Index).Tag & " hat den Chat verlassen“, Index
wsckChat(Index).Close
End If
Else

AddMessage „Die Verbindung wurde beendet“, „-system-“
blnConnected = False
blnServer = False
EnableButtons
End If
End Sub

Private Sub wsckChat_Connect(Index As Integer)
Senden „1“ & strNick
End Sub

Private Sub wsckChat_ConnectionRequest(Index As Integer, ByVal requestID As Long)
wsckChat(GetNextFreeIndex).Accept requestID
End Sub

Private Sub wsckChat_DataArrival(Index As Integer, ByVal bytesTotal As Long)

Dim strData As String

Dim strNick As String
Dim strMessage As String
wsckChat(Index).GetData strData
If Left(strData, 1) = „0“ Then
’ Chat-Nachricht
strNick = Trim(Mid(strData, 2, 50))
strMessage = Mid(strData, 52)
AddMessage strMessage, strNick
If blnServer Then ForwardMsg strData, Index
ElseIf Left(strData, 1) = „1“ Then
strNick = Trim(Mid(strData, 2, 50))
If blnServer Then
wsckChat(Index).Tag = strNick
ForwardMsg Left("-system-" & Space(50), 50) & „1“ & strNick, Index
End If
AddMessage „Der User " & strNick & " betritt den Chat.“, „-system-“
End If
End Sub

Private Sub wsckChat_SendComplete(Index As Integer)
blnSendCompleted = True
End Sub

So dann erstelle eine Oberfläche mit folgenden Elementen.
Winsock Steuerelement Name wsckchat und den index auf 0
dann noch 3 Textboxen mit den Namen

txtchat
txtname
txtnachricht

dann noch 4 Schaltflächen mit dem namen

cmdlisten --> chat wird auf server gestellt
cmdconnect --> chat läuft als Client
cmdcancel --> Abbruch der jeweiligen Function
cmdsend --> Daten werden gesendet

Ich hoffe du steigst dahinter. Am besten ausprobieren. ist alles selbst erklärend :smile: Wenn du noch fragen hast, so melde dich einfach :smile:

VLG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke
HI
Danke für die vielen Vorschläge. Ich werd beide einfach mal ausprobieren.
Hans