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:

Client/Server durch Tastendruck starten.

 
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: 240

BeitragVerfasst am: 01.03.2019, 13:04    Titel: Client/Server durch Tastendruck starten. Antworten mit Zitat

Hallo, guten Tag.

Wie kann ich bitte die ganze Server/Client-Geschichte durch Tastendruck
starten und nicht gleich wenn ich die EXE starte ?

Danke.
gruss

Code:

#Include Once "TSNE_V3.bi"
#Include once "fbgfx.bi"
#Include once "vbcompat.bi"
#include once "timer.bi"
Using FB

screenres 280,200,32,1,4
WindowTitle "krpc-send-5000"
ScreenControl SET_WINDOW_POS, 10, 460

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

declare Sub timer_handler( byval id as integer )
dim Shared as CTimer ptr t1
Dim SHARED AS Integer partnerID,zahl,thr1
Dim Shared As Single thr
Dim Shared As Integer x, y, buttons

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, 5000, 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, 5000, @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)
    PRINT V_Data
END Sub

Dim Shared AS connectionType myClient = "Client"

t1 = new CTimer( 100, @timer_handler, 1 )
t1->on()

Line (10,40)-(40,60), &h00ff00, Bf
Line (10,65)-(40,85), &hff0000, Bf
Line (60,40)-(90,60), &h0000ff, Bf

thr=0
thr1=0

Locate 4,3
Print thr1
Do
   
   SLEEP 1
   
   GetMouse (x, y, , buttons)
   
   If Point(x,y)=&h0000ff And buttons And 1 Then
      myClient.senden("stage,0")
      Sleep 200
   EndIf
   
   If Point(x,y)=&hff0000 And buttons And 1 Then
      thr=thr-0.1
      thr1=thr1-1
      If thr < 0 Then
         thr=0
         thr1=0
      EndIf
      Locate 4,3
      Print "    "
      Locate 4,3
      Print thr1
      myClient.senden("throttle,"+Str(thr))
      Sleep 200
   EndIf
   
   If Point(x,y)=&h00ff00 And buttons And 1 Then
        thr=thr+0.1
        thr1=thr1+1
      If thr > 1 Then
         thr=1
         thr1=10
      EndIf 
      Locate 4,3
      Print "    "
      Locate 4,3
      Print thr1
      myClient.senden("throttle,"+Str(thr))
      Sleep 200
   End If
 
Loop Until InKey = CHR(27)

myClient.beenden

sub timer_handler( byval id as integer )
   myClient.senden("d,0")
end Sub
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4247
Wohnort: ~/

BeitragVerfasst am: 02.03.2019, 13:06    Titel: Antworten mit Zitat

Ich verstehe jetzt die Frage nicht so ganz.
Code:
DO
  MachEinPaarSchoeneDingeOhneServer
  IF tastendruck THEN
    starte(server)
    ' und meinetwegen noch
    serverGestartet = true
  END IF
  IF serverGestartet THEN
    MachEinPaarSchoeneDingeMitServer
  END IF
LOOP UNTIL fertig

_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
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