Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Mit Server 2 Clienten ansprechen..?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
arduno



Anmeldungsdatum: 12.05.2011
Beiträge: 252

BeitragVerfasst am: 14.03.2012, 13:10    Titel: Mit Server 2 Clienten ansprechen..? Antworten mit Zitat

Hallo, ich habe diesen Server unten laufen.
Ich kann 2 Clienten damit aufnehmen.
Der Server meldet:
...mit 2 verbunden
...mit 3 verbunden

aber wie kann ich Daten zu 2 und 3 Senden?
Unten in der Do/Loop ist ja nur dieser Befehl:
myServer.senden("123456789")
und der Sendet immmer zu den zuletzt eingeklinkten Clienten.

Wie kann ich jetzt in der Schleife "2" und "3" ansprechen.
Danke.

GRuss


Code:

#Include Once "TSNE_V3.bi"

Dim Shared As Integer partnerID
Type connectionType
    As UInteger G_Server, G_Client
    As Integer isServer
    As String IP

    Declare Constructor(Typ As String)
    Declare Destructor

    Declare Sub hosten
    Declare Sub connecten
    Declare Sub beenden
    Declare Sub senden(Message As String)
End Type

'Subs für TSNE-Kommunikation
Declare Sub TSNE_Disconnected(ByVal V_TSNEID as UInteger)
Declare Sub TSNE_Connected(ByVal V_TSNEID as UInteger)
Declare Sub TSNE_NewData(ByVal V_TSNEID as UInteger, ByRef V_Data as String)
Declare Sub TSNE_NewConnection(ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket, ByVal V_IPA as String)
Declare Sub TSNE_NewConnectionCanceled(ByVal V_TSNEID as UInteger, ByVal V_IPA as String)

Constructor connectionType(Typ As String)
    If Typ = "Server" Then
        isServer = 1
        hosten
    ElseIf Typ = "Client" Then
        IP = "127.0.0.1"
        connecten
    Else
        IP = Typ
        connecten
    EndIf
End Constructor

Destructor connectionType
    beenden
End Destructor

Sub connectionType.beenden
    If isServer Then
        TSNE_Disconnect(G_Server)   'Server beenden
        TSNE_WaitClose(G_Server)    'Warten bis Server beendet ist
    Else
        TSNE_Disconnect(G_Client)   'Client beenden
        TSNE_WaitClose(G_Client)    'Warten bis Client beendet ist
    EndIf
End Sub

Sub connectionType.hosten
    Dim BV As Integer
    BV = TSNE_Create_Server(G_Server, 1435, 1, @TSNE_NewConnection, @TSNE_NewConnectionCanceled)    'Server erstellen
    If BV = TSNE_Const_NoError Then
        Print "Server bereit"
    Else
        Print "Fehler: " & BV
    EndIf
End Sub

Sub connectionType.connecten
    Dim BV As Integer
    BV = TSNE_Create_Client(G_Client, IP, 9000, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData) 'Client erstellen
    If BV = TSNE_Const_NoError Then
        Print "Suche Server"
    Else
        Print "Fehler: " & BV
    EndIf
End Sub

Sub connectionType.senden(Message As String)
    TSNE_Data_Send(partnerID, Message)
End Sub

Sub TSNE_Disconnected(ByVal V_TSNEID as UInteger)
    'Handling, wenn disconnected wird
    Print V_TSNEID & " wurde disconnectet"
End Sub

Sub TSNE_Connected(ByVal V_TSNEID as UInteger)
    'neue Verbindung wurde aufgebaut
    Print "Nun mit " & V_TSNEID & " verbunden"
    partnerID = V_TSNEID
End Sub

Sub TSNE_NewConnection(ByVal V_TSNEID as UInteger, ByVal V_RequestID as Socket, ByVal V_IPA as String)
    'Wenn versucht wird, eine neue Verbindung herzustellen
    'Nur wichtig für den Server

    Print "Ein Client versucht zu verbinden"

    Dim XNewTSNEID as UInteger
    Dim XReturnIPA as String

    'Akzeptieren der Verbindung
    TSNE_Create_Accept(V_RequestID, XNewTSNEID, XReturnIPA, @TSNE_Disconnected, @TSNE_Connected, @TSNE_NewData)
End Sub

Sub TSNE_NewConnectionCanceled(ByVal V_TSNEID as UInteger, ByVal V_IPA as String)
    'Verhalten, wenn abgelehnt wird
    Print "Verbindung wurde abgelehnt"
End Sub

Sub TSNE_NewData(ByVal V_TSNEID as UInteger, ByRef V_Data as String)
    'Hier kommen die Daten an.
    '
    'V_Data enthält dabei die Daten
    'Die ID zeigt, woher die Daten kommen

    'Bei der Verarbeitung ist zu beachten, dass wenn
    'schnell hintereinander Daten eingehen und diese
    'Sub sie nicht schnell genug verarbeiten kann,
    'gehen die Daten verloren

    Print V_Data & " ::kommt von:: " & V_TSNEID
End Sub



Dim As connectionType myServer = "Server"

Do
    Sleep 300, 1
    myServer.senden("123456789")
Loop Until InKey = Chr(27)

myServer.beenden
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 14.03.2012, 18:11    Titel: Antworten mit Zitat

Der Code sollte einen sehr einfachen Verbindungsaufbau ermöglichen, für Leute, die keine Ahnung von Netzwerkprogrammierung haben. Hier scheint mir aber auch das nötige Wissen um die allgemeine Programmierung zu fehlen.

'myServer.senden("123456789")' - das ist kein Befehl, sondern ein Funktionsaufruf. Die Funktion ruft selbst eine andere Funktion auf: 'TSNE_Data_Send(partnerID, Message)'.
Letztlich musst du das anpassen, am besten aus partnerID ein Array machen. Jemand, der ein Netzwerkprogramm schreiben will, sollte diese Aufgabe hinkriegen, weswegen ich hier auch keine Codes zur Lösung posten werde.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz