Server

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Mr.X

Betreff: Server

BeitragSa, Feb 24, 2007 0:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi hab mal ne server include geschrieben.
Mit ihr kann man leicht einen server realisieren.

Er kennt "schon" 2 befehle:
Arrow Auth:Username Passwort
Zum anmelden auf dem server.

Arrow Info
zeig eine server info kann nach belieben verendern.

Das ist der Code:
Code: [AUSKLAPPEN]

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;Anfag der Classe;;;;;;;;;;;;;;;;;;;;;
Type Client
;Die Id des streams
Field Id
;Die Ip des Clientes
Field Ip$
;Der Benutzername
Field Username$
;Eingeloggt?
Field logget%
End Type
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Function server_erstellen(port%=22,Timeout%=6000)
;Server erstellen
;Tcp Timeout einstellen
;Timeouts verlängern
TCPTimeouts(Timeout%,0)
;Serverstarten
svrServer%=CreateTCPServer(port%)
;Und fehler abfangen
If svrServer<>0 Then
   Return svrServer%
Else
   Return 0
End If
End Function

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Function Client_accept(tcp)

strStream=AcceptTCPStream(tcp)
;Wenn ein Client sich meldet...
  If strStream Then
;Neuen User erstellen
      usr.Client=New Client
;User Id = Stream
      usr\Id=strStream
;Stream Ip  abfragen
      streamip=TCPStreamIP(usr\Id)
;Ip mit punkten versehen
      Ip$=DottedIP$(streamip)
;Ip in user\Ip ablegen
      usr\Ip=Ip$
;;;;;;;;;;;;;;;;Anmelde Status auf server anzeigen;;;;;;;;;;;;;;;;

      Print "Client hat sich angemeldet Ip:"+usr\Ip+" Am: "+CurrentDate()+"-"+CurrentTime()

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Begrüßung senden
      WriteString(usr\Id,">>Willkommen "+usr\Ip)
      WriteString(usr\Id,">>Serverzeit: "+CurrentTime()+"-"+CurrentDate())
  End If
;Und fertig
End Function

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Function Client_empfangen() ;prüfen ob ein user eine nachricht gesendet hat
For usr.Client=Each Client
If ReadAvail(usr\Id)
Command$=ReadString(usr\Id)
Hdc=Handle(usr)
;///////Eigene functionen hier////////
Befehle(Command$,Hdc)
;/////////////////////////////////////
End If
Next
End Function

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Function Befehle(Command$,usr);Function um die befehle auszuwerten
u.Client=Object.Client(usr)
;//////////////////////////////////////////////

If Instr(Command$,"Auth:",1);Wenn in Command$ "Auth:" an erster stelle kommt

;;;;;;;;;;;;;;;;;;;;;;;;;;
;Pass wort und benutzernam isolieren
    Text1$=Mid$(Command$,6)
    leer%=Instr(Text1$," ",1)
    name$=Mid$(Text1$,1,leer%)
    wort$=Mid$(Text1$,leer%)
    u\Username$=Trim$(name$)
    Passwort$=Trim$(wort$)

;;;;;;;;;;;;;;;;;;;;;;;;;;
;Und die abfrage wenn Passwort$="Werneke" und logget% =0
;Kann aber noch verbessert werden ;-)
  If Passwort$="DasPasswort" And u\logget%=0
    Color 0,255,0
    u\Logget%=1
    Print "Anmeldung als "+u\Username$+" Um "+CurrentTime()+"-"+CurrentDate()
    WriteString(u\Id,"Eingeloggt Just Fun!")
    Color 255,255,255
  Else
    Color 255,0,0
    WriteString(u\Id,"Anmeldung Fehlgeschlagen")
    WriteString(u\Id,"   Schon eingeloggt?")
    Print "logversuch gescheitert User Ip:"+u\Ip+" Um "+CurrentTime()+"-"+CurrentDate()
    Color 255,255,255
 End If
;;;;;;;;;;;;;;;;;;;;;;;;;;

ElseIf Instr(Command$,"Info",1);Wenn in Command$ "Info" an erster stelle kommt

    WriteString(u\Id,"-------Server Info---------")
    WriteString(u\Id,"Server: ~My Server~")
    WriteString(u\Id,"Serverzeit: "+CurrentTime())
    WriteString(u\Id,"Serverdatum: "+CurrentDate())
    WriteString(u\Id,"ServerIp: 127.0.0.1")
    WriteString(u\Id,"-----Server info ende------")

;##################################################
;############Eigene befehle mit Elseif#############
;####################!!Hier!!######################
;##################################################

Else
    WriteString(u\Id,"Befehl nicht gefunden");Wenn nicht zutrift
End If
;///////////////////////////////////////////////
End Function

Die functionen lauten:
Arrow Stream%=Server_erstellen(Port%, tcpTimeout%)
Einen server erstellen.
Arrow Client_accept(Stream%)
Auf Client`s warten
Arrow Client_Emfangen()
Auf Nachrichten prüfen und verarbeiten.

Und man kann leicht noch eigene befehle hinzufügen.

So und ein server sieht dann so aus:
Code: [AUSKLAPPEN]

Include "E:\server.bb"

;Hauptschleife
Print "Server wird gestartet..."
svr=server_erstellen(22,999999999)
While Not KeyHit(1)
;Die functionen aufrufen   
Client_Accept(svr)
Client_Empfangen()
Wend
End

Viel spass damit.

StepTiger

BeitragSa, Feb 24, 2007 0:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Was spricht dafür, den Port, der für verschlüsselte daten gedacht ist, für soetwas zu missbrauchen?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Mr.X

BeitragSa, Feb 24, 2007 0:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Wusste nicht das das ein verschlüsselter port ist kann man ja ändern Wink

StepTiger

BeitragSa, Feb 24, 2007 0:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, ist eine schöne Idee. Bietet aber einen großen Nachteil:
Eigentlich muss man sich selbst Protokolle erstellen, die auf das jeweilige Programm zugeschnitten sind. Sehr sinnvoll sind so wenige, spezifische Funktionen nicht.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Mr.X

BeitragSa, Feb 24, 2007 0:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Mann kann auch selbst noch befehle einfügen dann ist das nicht mehr so spezifisch.
 

Garfield12

Betreff: Frage

BeitragDo, Aug 02, 2007 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mal gestöbert und das hier entdeckt.
Wie mach ich das richtig???
Also ersten Code als bb-File speichern und zweites Programm ausführen (F5en)???
Wenn ja klappt das bei mi nicht.
MfG

the FR3AK

BeitragDo, Aug 02, 2007 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wärs mit ner PM an den Autor dieses Threads?
Jetzt hast du diesen Monate alten Thread wieder hochgeholt Rolling Eyes
 

#Reaper

Newsposter

BeitragDo, Aug 02, 2007 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wie wärs damit, beide Programme gleichzeitig auszuführen? -.-

Da die meisten IDE's dann aber das eine Progg automatisch beenden, musste bei z.B. dem Server selber die Exe starten.. Rolling Eyes
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Mr.X

BeitragSa, Aug 04, 2007 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Den richtigen pfad bei "include" eingeben.
dann den Server starten und dan den Client
( Client müsst ihr erst schreiben!)
dan klappt es.
  • Zuletzt bearbeitet von Mr.X am Sa, Aug 04, 2007 19:00, insgesamt einmal bearbeitet

StepTiger

BeitragSa, Aug 04, 2007 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Jop. Mit der B3D Standard IDE geht es aber auch xD
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

DerKeks

BeitragMi, Aug 15, 2007 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
hat jemand nen funktionierenden client für das server system? den er mir vllt ma "leihen" könnte? ( kriegt ihn auch wieder ohne kratzer Very Happy )

also ich hab mich ma an nem client versucht aber er will nicht...
das ist der bisherige hafen müll-code:
Code: [AUSKLAPPEN]
con_ip = Input("Ip des Servers: ")
con_port = Input("Port des Servers: ")

connect = OpenTCPStream(con_ip, con_port)

If connect<>0 Then
   Delay 1000
   Cls
   Print "Erfolgreich verbunden!"
Else
   Print "ERROr"
EndIf
WaitKey
End


ich habe bei IP die DottedIP und die normale integer-IP eingetragen aber beides klappt nicht...

hat einer ne ahnung wo das problem liegt oder hat sogar einer nen funzenden client für mich?

Silver_Knee

BeitragMi, Aug 15, 2007 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
wssen ip hast du eingegeben und wo ist der server gestartet

DerKeks

BeitragMi, Aug 15, 2007 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab client und server auf meinem PC laufn lassen
ich habs mit 127.0.0.1, der dottedIP und der normalen IP von "TCPStreamIP" versucht... aber bei keiner kommt was ( also nur das "ERROR" )

Silver_Knee

BeitragMi, Aug 15, 2007 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
con_ip = Input("Ip des Servers: ")

eine dotted ip ist ein string also solltest du auch ne string variable nehmen sonst macht er aus dem string ne zahl und die rerste zahl die bei "127.0.0.1" steht ist 127. was bleibt ist ein opentcpstream der zum server 127 versucht zu connecten...

DerKeks

BeitragDo, Aug 16, 2007 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
ok^^ ich werds mal versuchen..

edit: ok jez klappts Very Happy

DerKeks

BeitragDo, Aug 16, 2007 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
erstma sorry wegen doppelpost..
aber ich hab jetzt das problem dass ich connecten kann ( "Erfolgreich Verbunden" kommt ) nur leider kommt weder die begrüssung aus Client_Accept(stream) noch kann ich befehle weitergeben :/ im server wird angezeit dass sich ein neuer client angemeldet hat und wann un so aber der client will noch ned richtig...
hier mal der problemcode:
Code: [AUSKLAPPEN]
Include "S_lib.bb"

con_ip$ = Input("Ip des Servers: ")
con_port = Input("Port des Servers: ")

connect = OpenTCPStream(con_ip$, con_port)

Repeat

If connect<>0 Then
   Delay 1000
   Cls
   Print "Erfolgreich verbunden!"
   cmd$ = Input("=>")
   Befehle(cmd$, usr)
   Client_Accept(connect)
   Client_Empfangen()
Else
   Print "ERROr"
EndIf

Until KeyHit(1)

WaitKey
End


hoffentlich kann mir wer helfen =/

edit: es klappt weder wenn ich die befehl abfrage im client noch wenn ich die befehle übern server eingeben will... imma kommt MAV error -.-
 

Mr.X

BeitragMi, Aug 04, 2010 23:04
Antworten mit Zitat
Benutzer-Profile anzeigen
der server ist völlig falsch geschrieben hab ganz oben gezeigt wie man es richtig macht.
und wieso Opentcptream?!, und was soll der befehl "Befehle()" machen?!.

[EDIT] Nein das war nicht so wichtig sorry, wegen dem hoch holen. hab nicht drauf geachtet! Embarassed
  • Zuletzt bearbeitet von Mr.X am So, Aug 08, 2010 8:14, insgesamt einmal bearbeitet

Nicdel

BeitragDo, Aug 05, 2010 10:52
Antworten mit Zitat
Benutzer-Profile anzeigen
War das jetzt so wichtig, dass du einen 3 Jahre alten Thread ausgraben musstest?
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group