als server senden....

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

dimaster

Betreff: als server senden....

BeitragSo, Feb 19, 2006 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo zusammen

ich habe sonen änlichen server wie der in dem beispiel ausm F&T bereich(unten). jetzt mal zur frage:

ich möchte als server z.B. den text "hallo" zusenden. ich möchte aber, dass alles aus dem server programm heraus passiert. also ich möchte, dass der server sich am gespräch der clients beteiligen kann. ich komm aba nich drauf wie ich dat machen könnte ( dass ich nich drauf komme könnte auch am schlafmangel liegen^^ )

Code: [AUSKLAPPEN]
;Type wo die Clients mit ip,port und name drin gespeichert werden
Type client
Field name$
Field ip,port
End Type

port = 7142 ;Serverport
udp = CreateUDPStream(port) ;UDP Stream auf port 7142 erstellen

;Wenn der Stream nicht steht Fehlermeldung ausgeben und beenden
If Not udp Then
  Print "Der UDP Stream konnte nicht erstellt werden."
  End
EndIf

Print "Server gestartet."

Repeat

  If RecvUDPMsg(udp) <> 0  ;Wenn eine UDP Message eingegangen ist.
    client_ip = UDPMsgIP(udp)  ;IP des Absenders
    client_port = UDPMsgPort(udp) ;Port des Absenders

    message = ReadByte(udp)  ;Anhand von diesem Byte erkennt der Server was der Client will

    Select message
      ;1 = Chatmessage
      Case 1
        name$ = ReadString(udp) ;Wer sendet eine Chatmessage
        txt$ = ReadString(udp) ;Der Inhalt der Chatmessage
        Print name$ + ": " + txt$ ;Chatmessage auf dem Server ausgeben

        ;Nachricht an alle anderen Teilnehmer weitersenden
        For c.client = Each client  ;Jeden Client durchgehen
          If Not c\name$ = name$  ;Wenn es nicht der Client ist der gerade gesendet hat
            WriteByte(udp,1)  ;Nachrichtentyp 1 senden = Chatmessage
            WriteString(udp,name$) ;Name weiterleiten
            WriteString(udp,txt$) ;Inhalt weiterleiten
            SendUDPMsg udp,c\ip,c\port  ;UDP Message absenden
          EndIf
        Next

      ;Neuer Client ist dem Chat beigetreten
      Case 2
        name$ = ReadString(udp)  ;Name des Clients lesen
        c.client = New client  ;Neues client objekt erstellen
        c\ip = client_ip  ;Ip speichern
        c\port = client_port ;Port speichern
        c\name$ = name$  ;Name speichern

        ;Servernachricht ausgeben
        Print name$ + " ist dem Chat beigetreten."
       
        ;Allen anderen Clients bescheid sagen das ein neuer da ist.
        For c2.client = Each client
          If Not c2 = c
            WriteByte(udp,2)  ;Nachrichtentyp 2 senden = Client beigetreten
            WriteString(udp,name$)  ;Name weiterleiten
            SendUDPMsg udp,c2\ip,c2\port  ;UDP Message senden
          EndIf
        Next

      ;Client hat die Verbindung getrennt
      Case 3
        name$ = ReadString(udp) ;Clientname auslesen

        ;Client löschen und allen anderen Clients mitteilen
        For c.client = Each client
          If c\name$ = name$
            Delete c  ;Den Client löschen der die Nachricht gesendet hat
          Else
            WriteByte(udp,3)  ;Den anderen sagen das ein Client weg geht.
            WriteString(udp,name$) ;Name weiterleiten
            SendUDPMsg udp,c\ip,c\port ;UDP Message senden
          EndIf
        Next
 
        ;Servernachricht ausgeben
        Print name$ + " hat den Chat verlassen."

    End Select

  EndIf

Until KeyHit(1)

CloseUDPStream(udp) ;UDP Stream schliessen

End


mfg dimaster
 

Dreamora

BeitragSo, Feb 19, 2006 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Also der Server sich selbst senden?
Dazu musst du es ja eigentlich garnicht senden, sondern einfach den Daten hinzufügen (als ob es gerade angekommen wäre von einem Client und du es verarbeiten würdest).
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

dimaster

BeitragSo, Feb 19, 2006 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
hmmm ich bin mir jetzt nicht sicher wie?! also ich müsste also simulieren, dass eine nachricht von einem client reinkommt und dann so senden? klar aber wie soll ich dat simulieren? ich bin irgendwie verwirrt Shocked ^^

mfg dimaster

dimaster

BeitragSo, Feb 19, 2006 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
könnte mir vielleicht jemand das etwas genauer definieren?

dominik

BeitragSo, Feb 19, 2006 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
naja du speichserts ja irgendwo das gespärch oder?
entweder einfach nur in nem typefeld oder in ner datei.
und da kannst du doch einfach nen neuen eintrag anhängen......
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group