hi leute, ich weiß dass es überall sehr viele beiträge und tutorials zu der winsock komponente gibt, allerdings hab ich gleich 2 probleme damit ich probiere einen kleinen messenger für die schule zu programmieren, der aber gleich so in der art server und client gleichzeitig ist. hier mal mein bisheriger code (ich weiß da ist viel dabei was nicht das problem betrifft, aber ich schätz mal dass das alles ineinander-greif):
Option Explicit
Dim nachricht As String
Dim serverIP As String
Dim numevent As Integer
Dim chatname As String
Dim content As String
Private Sub befsend_Click()
nachricht = "2" & Text4.Text
'MsgBox Winsock1.State
Winsock1.SendData nachricht
'Call send(nachricht)
End Sub
'mögliche events:
'1 = Chatname
'2 = Nachricht
'3 = drop (verlassen)
'4 = frage nach name
Private Sub Command1_Click()
serverIP = Text1.Text
'MsgBox serverIP
If serverIP = "" Then
MsgBox "Sie müssen etwas eingeben!", vbCritical Or vbOKOnly, "Fehler"
Text1.SetFocus
Exit Sub
Else
chatname = Text2.Text
Winsock1.Close
Winsock1.RemoteHost = serverIP
Winsock1.RemotePort = 12345
Winsock1.Connect
End If
End Sub
Private Sub form_load()
' Port 12345 soll abgehört werden
Winsock1.LocalPort = 12345
' Abhör-Vorgang starten
Winsock1.Listen
Auseigener.Caption = Winsock1.LocalHostName
Text3.Enabled = False
Text4.Enabled = False
befsend.Enabled = False
End Sub
Private Sub Winsock1_Connect()
' Jezt können wir mit dem Button die Nachricht senden
'Command1.Enabled = True
Text3.Enabled = True
Text4.Enabled = True
befsend.Enabled = True
MsgBox "Verbindung erfolgreich mit " & serverIP & "!", vbInformation, "Erfolg"
nachricht = "4"
Winsock1.SendData nachricht
End Sub
Private Sub Command2_Click()
nachricht = "3"
Call send(nachricht)
End
End Sub
Private Sub Winsock1_ConnectionRequest( _
ByVal requestID As Long)
' Das Abhören wird beendet
Winsock1.Close
' Die Verbindung wird akzeptiert
'Winsock1.Accept requestID
Winsock1.Accept requestID
MsgBox "Ein Computer nimmt die Verbindung auf!", vbInformation, _
"Verbindungsaufbau"
'Winsock1.SendData "1" & chatname
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'mögliche events:
'1 = Chatname
'2 = Nachricht
'3 = drop (verlassen)
'4 = frage nach name
' Die ankommenden Daten werden in einer Variable
' (strDaten) gespeichert
Winsock1.GetData sData
numevent = Int(Left$(sData, 1))
'Länge der Nachricht
laenge = Len(sData)
'content: inhalt der nachricht, ohne numevent
content = Right$(sData, laenge - 1)
If numevent = 1 Then
Me.Caption = content & " - Unterhaltung"
Me.Show
ElseIf numevent = 2 Then
Text1.Text = content & Chr(13)
Me.Show
ElseIf numevent = 3 Then
MsgBox "Ihr Gegenüber hat die Unterhaltung verlassen!" & Chr(13) & "Das" & _
"Fenster wird sich nun automatisch schließen.", vbInformation, "Ende"
'... weiterer Code
ElseIf numevent = 4 Then
Winsock1.SendData "1" & chatname
End If
End Sub
Private Sub send(nachricht As String)
Winsock1.SendData nachricht
nachricht = ""
End Sub wenn ich das programm nun ausführe, bekomme ich immer beim debugger die zeile als fehler:
Winsock1.SendData nachricht allerdings habe ich leider keine ahnung, wo der fehler liegt.
mein 2tes problem: dass winsock funktioniert, braucht man ja die MSWINSCK.OCX Datei in C:/Windows/system32/
wie kann ich nun, das ganze ist übrigens ein vb6 projekt diese art "programmbibliotheksdatei" mitveröffentlichen, sodass jeder der die datei nicht im system32 ordner hat die automatisch dorthin kopiert bekommt, bzw kann man das als eine art resource hinzufügen? ich hab in einem anderen forum schon etwas darüber gelesen, allerdings war es mir unverständlich und jetzt finde ich es nicht mehr.
ich hoffe ihr könnt mir helfen,
mfg disconnect
Gehe immer vom Guten Willen Anderer aus! |