Verbindung mit BNetEx funktioniert nicht richtig

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Sereiya

Betreff: Verbindung mit BNetEx funktioniert nicht richtig

BeitragSo, Nov 22, 2009 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoi,
Ich probier seit kurzem mit Bmax ein wenig herum Wink Hab mich mit den Grundlagen sowie bereits MaxGUI vertraut gemacht (Und dies und das wurde mir von jemandem auch als Tipp gegeben^^). Bloß hapert es bei BNetEx. Ich wollte einfach mal anfangen ein Programm für unsere kleinen Lan Partys hier zu schreiben (weil man da von allem was braucht, zum üben), Aber irgendwie möchte sich das PRogramm nicht so ganz verbinden wie ich will, und ich komm nicht drauf woran das liegt :/

Server:
Code: [AUSKLAPPEN]
SuperStrict
Framework brl.basic
Import brl.retro
Import brl.eventqueue
Import MaxGui.Drivers
Import Vertex.BNetEx

' ** Globale Variablen **

Global Connected:Int = 0
Global tcp:TTCPStream = New TTCPStream
Global Closehidden:Int = 1
Global CloseOpen:Int = 0
Global Port:Short
Global ClosehiddenPortfrage:Int = 1
Global CloseopenPortfrage:Int = 0
Global MaxClients:Int
Global tmp:TTCPStream

' #########

' ** Global Window Variablen **

Global CloseWindow:TGadget=CreateWindow("Quit?",270,300,200,100,Null,WINDOW_TITLEBAR)      '## Quit Window
Global YesButton:TGadget=CreateButton("Yes",10,30,80,25, CloseWindow)
Global NoButton:TGadget=CreateButton("No",100,30,80,25, CloseWindow)
Global Label1:TGadget=CreateLabel("Are you sure you want to quit?",10,10,200,40,CloseWindow)

Global PortWindow:TGadget=CreateWindow("Listen at Port...",3,3,220,130,Null,WINDOW_TITLEBAR)'## Port Window
Global OkButton:TGadget=CreateButton("Ok",10,70,80,25, PortWindow)
Global PortLabel:TGadget=CreateLabel("Port:",10,10,80,20,PortWindow)
Global PortInput:TGadget=CreateTextField(100,10,100,20,PortWindow)
Global PlayerLabel:TGadget=CreateLabel("Clientcount:",10,40,80,20,PortWindow)
Global PlayerInput:TGadget=CreateTextField(100,40,100,20,PortWindow)
' #########

Global MainWindow:TGadget=CreateWindow("LAN-P.O.S. ---- SERVER ----", 200,200,640,480)   '## MAINWINDOW

Global FileMenu:TGadget=CreateMenu("File",0,WindowMenu(MainWindow))               '## File
CreateMenu "Connect",101,FileMenu                                 '## File --> Verbinden
CreateMenu "Quit",102,FileMenu                                  '## File --> Beenden
Global ConfigMenu:TGadget=CreateMenu("Configure",0,WindowMenu(MainWindow))            '## Bearbeiten
Global InfoMenu:TGadget=CreateMenu("Info",0,WindowMenu(MainWindow))               '## Info
CreateMenu "LAN-P.O.S.",301,InfoMenu                              '## Info --> Über LAN-P.O.S.
CreateMenu "Your IP",302,InfoMenu                                 '## Info --> Eigene IP
Global PlayerList:TGadget=CreateListBox(10,10,200,380,MainWindow)               '## SPIELERLISTE

UpdateWindowMenu MainWindow
Close
tcp.init()


Repeat
  ClosehiddenPortfrage = 0
  ShowGadget(PortWindow)
  Portfrage
Until Connected = 1

tcp.Listen:Int(MaxClients:Int=TextFieldText(PlayerInput))


Repeat
tcp.Accept()
Global tmp:TTCPStream = tcp.Accept()
If tmp <> Null
Notify "Testclient ist daaaa :P"
EndIf
  WaitEvent()
  Select EventID()
  Case EVENT_WINDOWCLOSE
    Select EventSource()
      Case MainWindow
       Closehidden = 0
       ShowGadget(CloseWindow)
       Close
     End Select
  Case EVENT_MENUACTION
   Select EventData()
     Case 102
       Closehidden = 0
       ShowGadget(CloseWindow)
       Close
     Case 101
      Notify "Serverversion. If you want to connect to a Server, use the Client!"
     Case 301
      Notify "LAN-P.O.S. - LAN-Party Organizing System. For further informations: www.gidf.de"
     Case 302

    End Select
   End Select
Forever



' ###################################### FUNCTION CLOSE
Function Close()                                          
If Closeopen = 0
  HideGadget(CloseWindow)
  Closeopen = 1
EndIf                                       
While Closehidden = 0
  Select WaitEvent()
   Case EVENT_WINDOWCLOSE
     HideGadget(CloseWindow)
     Closehidden = 1
   Case EVENT_GADGETACTION
    If EventSource() = YesButton Then End
    If EventSource() = NoButton
     HideGadget(CloseWindow)
     Closehidden = 1
    End If
  End Select
Wend
End Function   
' ###################################### FUNCTION PORTFRAGE
Function Portfrage()                                    
If Closeopen = 0
  HideGadget(PortWindow)
  Closeopen = 1
EndIf                                       
While ClosehiddenPortfrage = 0
  Select WaitEvent()
   Case EVENT_WINDOWCLOSE
     HideGadget(PortWindow)
     ClosehiddenPortfrage = 1
   Case EVENT_GADGETACTION
    If TextFieldText(PortInput) = Null
     Notify "You must specify a Port!"
    ElseIf EventSource() = OkButton
     tcp.SetLocalPort:Int(Port:Short=TextFieldText(PortInput))
     HideGadget(PortWindow)
     ClosehiddenPortfrage = 1
     Connected = 1
    End If
  End Select
Wend
End Function   
' ############


Client:
Code: [AUSKLAPPEN]
SuperStrict
Framework brl.basic
Import brl.retro
Import brl.eventqueue
Import MaxGui.Drivers
Import Vertex.BNetEx




' ** Globale Variablen **

Global Connected:Int = 0
Global CloseOpen:Int = 0
Global CloseopenConnect:Int = 0
Global Closehidden:Int = 1
Global ClosehiddenConnect:Int = 1
Global tcp:TTCPStream = New TTCPStream
Global PortL:Short
Global PortR:Short
Global IP:Int


' #########

' ** Global Window Variablen **

Global CloseWindow:TGadget=CreateWindow("Quit?",270,300,200,100,Null,WINDOW_TITLEBAR)      '## Quit Window
Global YesButton:TGadget=CreateButton("Yes",10,30,80,25, CloseWindow)
Global NoButton:TGadget=CreateButton("No",100,30,80,25, CloseWindow)
Global Label1:TGadget=CreateLabel("Are you sure you want to quit?",10,10,200,40,CloseWindow)

Global ConnectWindow:TGadget=CreateWindow("Connect to Server",270,300,470,210)         '## Connect Window
Global ServerIPLabel:TGadget=CreateLabel("Server-IP:",10,10,80,20,ConnectWindow)
Global ServerIPInput:TGadget=CreateTextField(100,10,350,20,ConnectWindow)
Global NameLabel:TGadget=CreateLabel("Nickname:",10,40,80,20,ConnectWindow)
Global NameInput:TGadget=CreateTextField(100,40,350,20,ConnectWindow)
Global PortLabel:TGadget=CreateLabel("Port:",10,70,80,20,ConnectWindow)
Global PortInput:TGadget=CreateTextField(100,70,80,20,ConnectWindow)
Global ConnectButton:TGadget=CreateButton("Connect",10,100,80,25,ConnectWindow)
Global CancelButton:TGadget=CreateButton("Cancel",100,100,80,25,ConnectWindow)

' #########



Global MainWindow:TGadget=CreateWindow("LAN-P.O.S.", 200,200,640,480)            '## MAINWINDOW

Global FileMenu:TGadget=CreateMenu("File",0,WindowMenu(MainWindow))               '## File
CreateMenu "Connect",101,FileMenu                                 '## File --> Verbinden
CreateMenu "Quit",102,FileMenu                                  '## File --> Beenden
Global ConfigMenu:TGadget=CreateMenu("Configure",0,WindowMenu(MainWindow))            '## Bearbeiten
Global InfoMenu:TGadget=CreateMenu("Info",0,WindowMenu(MainWindow))               '## Info
CreateMenu "LAN-P.O.S.",301,InfoMenu                              '## Info --> Über LAN-P.O.S.
CreateMenu "Your IP",302,InfoMenu                                 '## Info --> Eigene IP


UpdateWindowMenu MainWindow
Close
Connect
tcp.init()


If Connected = 0
  ClosehiddenConnect = 0
  ShowGadget(ConnectWindow)
  Connect
End If

Repeat
  WaitEvent()
  Select EventID()
  Case EVENT_WINDOWCLOSE
    Select EventSource()
      Case MainWindow
       Closehidden = 0
       ShowGadget(CloseWindow)
       Close
     End Select
  Case EVENT_MENUACTION
   Select EventData()
     Case 102
       Closehidden = 0
       ShowGadget(CloseWindow)
       Close
     Case 101
      ClosehiddenConnect = 0
      ShowGadget(ConnectWindow)
      Connect
     Case 301
      Notify "LAN-P.O.S. - LAN-Party Organizing System. For further informations: www.gidf.de"
     Case 302

    End Select
   End Select
Forever


' ###################################### FUNCTION CONNECT
Function Connect()
SetStatusText ConnectWindow, "Status: Wait"
If CloseopenConnect = 0
  HideGadget(ConnectWindow)
  CloseopenConnect = 1
EndIf                                          
While ClosehiddenConnect = 0
  Select WaitEvent()
   Case EVENT_WINDOWCLOSE
     If Connected = 0
       Closehidden = 0
       ShowGadget(CloseWindow)
       Close
     EndIf
     If Connected = 1
     HideGadget(ConnectWindow)
     ClosehiddenConnect = 1
     EndIf
   Case EVENT_GADGETACTION
     If EventSource() = ConnectButton
       tcp.SetLocalPort:Int(PortL:Short=TextFieldText(PortInput))
       SetStatusText ConnectWindow, "Status: Local Port defined"
       tcp.Setremoteport:Int(PortR:Short=TextFieldText(PortInput))
       SetStatusText ConnectWindow, "Status: Remoteport defined"
       tcp.setremoteip:Int(IP:Int=TextFieldText(ServerIPInput))
       SetStatusText ConnectWindow, "Status: IP defined"
       SetStatusText ConnectWindow, "Status: Try to connect to server..."
       tcp.connect:Int()
       Global tmp:Int = tcp.connect:Int()
       If tmp = True Then SetStatusText ConnectWindow, "Status: Connected!"
     End If
     If EventSource() = CancelButton
       Closehidden = 0
       ShowGadget(CloseWindow)
       Close
     EndIf
  End Select
Wend
End Function
' ###################################### FUNCTION CLOSE
Function Close()                                          
If Closeopen = 0
  HideGadget(CloseWindow)
  Closeopen = 1
EndIf                                       
While Closehidden = 0
  Select WaitEvent()
   Case EVENT_WINDOWCLOSE
     HideGadget(CloseWindow)
     Closehidden = 1
   Case EVENT_GADGETACTION
    If EventSource() = YesButton Then End
    If EventSource() = NoButton
     HideGadget(CloseWindow)
     Closehidden = 1
    End If
  End Select
Wend
End Function   


Der Client bleibt beim Versuch zum verbinden stehen, und der Server bemerkt von einer Verbindung gar nix. Wenn mir jemand eine kleine Hilfestellung geben könnte wäre das genial, aktuell steh ich auf dem Schlauch. :/

lg
Serry

Mathias-Kwiatkowski

BeitragMi, Nov 25, 2009 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
habe die maxgui derzeit nich installiert, aber was mir auffällt, mein server prog würde immer in console laufen ... ansonsten muss du waitevent aus dem weg gehen, da das prog sonst wartet bis du z.b. nen button geklickt hast ^^

Sereiya

BeitragDo, Nov 26, 2009 20:08
Antworten mit Zitat
Benutzer-Profile anzeigen
<<(Hier stand mal was, was sich aber bereits geregelt hat)>>

Mein Serverprogramm soll laut nem Pro jetzt funktionieren, macht der Client also murks...

Hummelpups

BeitragMo, Dez 07, 2009 9:58
Antworten mit Zitat
Benutzer-Profile anzeigen
tcp.SetLocalPort:Int(PortL:Short=TextFieldText(PortInput))

Das geht doch so garnicht?

PortL:Short=TextFieldText(PortInput)
tcp.SetLocalPort:Int(PortL)
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

Mathias-Kwiatkowski

BeitragDi, Dez 08, 2009 3:56
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry hab mir den code nich angesehn, aber wie gesagt waitevent, heisst das das prog auf ein event wartet, und in dem moment läuft es nich weiter, desweiteren kenn ich nur server programme, die in einer console angezeigt werden, da die routine darin schneller is, wenn man nun aufm server iwi aggieren will, kann man sich ja ein prog schreiben was aufm server interagieren kann, und somit einstellungen ect. machen könnte.
oder direckt mitn client^^ was die einfachste lösung wäre...

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group