vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: WinXP (WINPOPUP)??? 
Autor: Snof
Datum: 25.04.03 19:28

Hi Gigaherz

Für deinen Chat benötigst du 2 Winsock-Controls
- eins für den Serverbetrieb
- eins für den Clientbetrieb

Ein Programm kann nun sowohl als Server als auch als Client verwendet werden. Mit etwas Programmiergeschik sogar als beides gleichzeitig. Du brauchst also nicht zwei Programme entwickeln.

Dem für den Serverbetrieb gibst du den Index 0 (!WICHTIG!).
Das für den Clientbetrieb erhällt keinen Index.

Der Code für den Server sieht etwa so aus.
Option Explicit
 
'Gibt anzahl der Clients an
Private iConnectedClients As Integer
 
'Startet den Serverbetrieb
Private Sub cmdServerStarten_Click()
 
 'Port 12345 soll abgehört werden
  ServerWinsock(0).LocalPort = 12345
 
 'Abhör-Vorgang starten
  ServerWinsock(0).Listen
 
End Sub
 
'Beendet den Serverbetrieb
Private Sub cmdServerBeenden_Click()
Dim W As Winsock
 
 For Each W In ServerWinsock
  With W
 
   If .State = sckConnected Then
    .Tag = "send"
    .SendData "Server wird beendet"
 
    Do While .Tag <> vbNullString
     DoEvents
    Loop
 
    .Close
    Unload W
   End If
  End With
  DoEvents
 Next W
 
 ServerWinsock(0).Close
 iConnectedUsers = 0
End Sub
 
Private Sub ServerWinsock_SendComplete(Index As Integer)
 ServerWinsock(Index).Tag = vbNullString
End Sub
 
'Wird ausgelösst, wenn ein neur Client connectet
Private Sub ServerWinsock_ConnectionRequest(Index As Integer, ByVal requestID _
  As Long)
 
 If Index = 0 Then
  iConnectedClients = iConnectedClients + 1
 
 'Lädt ein neues Winsock-Control und Konfiguriert es
  Load ServerWinsock(iConnectedClients)
  ServerWinsock(iConnectedClients).LocalPort = 12345
  ServerWinsock(iConnectedClients).Accept requestID
 
 End If
End Sub
 
'Wird ausgelößt, wenn Daten empfangen werden
Private Sub ServerWinsock_DataArrival(Index As Integer, ByVal bytesTotal As _
  Long)
Dim sDaten As String
 
'sDaten wird der empfangene Ausdruck zugewiesen
 ServerWinsock(Index).GetData sDaten, vbString
 
  'Auswertung der Daten
 
 End With
End Sub
 
'Wird ausgelößt, wenn ein Client die Verbindung trennt
Private Sub ServerWinsock_Close(Index As Integer)
 
 Winsock(Index).Close
 Unload Winsock(Index)
 
 iConnectedClients = iConnectedClients - 1
 
End Sub
Für den Client ist das nätürlich nich so umfangreich.
Du solltest aber auf jeden Fall einen Timer einbauen, der in regelmäßigen Abständen die Verbindung überprüft.
'Überprüft, ob noch eine Verbindung besteht
Private Sub Timer_Timer()
 If Not (ClientWinsock.State = sckConnected) Then
'Es besteht keine Verbindung
 
  ClientWinsock.Close
  ClientWinsock.Connect "1.2.3.4", 12345
 
 End If
End Sub
 
'Stellt eine Verbindung zum Server her
Private Sub VerbindungAufbauen()
 ClientWinsock.Connect "1.2.3.4", 12345
 Timer.Enabled = True
End Sub
 
'Trennt die Verbindung zum Server
Private Sub VerbindungTrennen()
 ClientWinsock.Close
 Timer.Enabled = False
End Sub
Der Code ist natürlich nur ein Gerüst bzw. ein Beispiel. Du must ihn noch auf dein Programm umändern.

Wenn du einzelne Clients ansprehen möchtest, kannst du das über den Index des Server-Winsocks tun. Du must aber darauf achten, dass duch Ein- und Auswählen von Clients nicht jeder Index genutz sein muss. Das heist du hast z.B. die Winsoks:
- ServerWinsock(0)
- ServerWinsock(2)
- ServerWinsock(3)
- ServerWinsock(5)

Wenn du das alles beachtest, dürftest dukeine großen Probleme mit Winsock haben.


demn?chst Online: SnofWare.de
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
WinXP (WINPOPUP)???605Gigaherz23.04.03 00:15
Re: WinXP (WINPOPUP)???382Gigaherz23.04.03 00:19
Re: WinXP (WINPOPUP)???425Snof23.04.03 00:54
Re: WinXP (WINPOPUP)???345Gigaherz25.04.03 16:52
Re: WinXP (WINPOPUP)???700Snof25.04.03 19:28
Re: Grundgerüst107Gast Only4U01.05.03 16:48
Re: Grundgerüst384Snof01.05.03 18:36
Re: Grundgerüst122Gast Only4U01.05.03 22:36
Re: Grundgerüst104Gast Only4U01.05.03 22:40
Re: Grundgerüst124Gast Only4U05.05.03 18:50
Re: WinXP (WINPOPUP)???377ModeratorDieter23.04.03 00:22

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel