Verbindung übers Internet

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Und was soll mir der Code bringen?

KeyKon
(\/) (°,,,°) (\/)
Benutzeravatar
kaitec
Beiträge: 120
Registriert: 07.11.2005 00:50
Wohnort: Langenselbold
Kontaktdaten:

Beitrag von kaitec »

Ich hatte mal en test Server und Client geschrieben um strings zu senden...!
Den Code poste ich hier gerne als beispiel für gut Clients und Servers...


SERVER:

Code: Alles auswählen

;-Config
Port = 335

If CreateNetworkServer(Port)

;-Main Loop
Repeat
Delay(1)
Buffer.s = ""
deltEvent.l = NetworkServerEvent()

If deltEvent

ClientID = NetworkClientID()

Select deltEvent

Case 1
SendNetworkData(ClientID, "Connecting..."+Chr(13)+Chr(0), 2000)

Case 2

;ReceiveNetworkData(ClientID, Buffer.s, 2000)
buffer.s=Space(2000)
ReceiveNetworkData(NetworkClientID(),@buffer,2000)
buffer.s = RTrim(buffer.s)
Delay(10)

MessageRequester("MELDUNG VOM SERVER", buffer.s, 0)


Case 4
Buffer.s = ""

EndSelect
EndIf 
ForEver
Else
MessageRequester("SYSTEM", "ERRO", 0)
EndIf
Client:

Code: Alles auswählen

; Author: kaitec
; Date: xx.xx.xxxx
; OS: Windows



; ++++++++++++++++++++++++  Network Client Example +++++++++++++++++++++++++++++++
#Win = 0

;-0OpenWindow
OpenWindow(#Win, 0, 0, 105, 300, #PB_Window_SystemMenu|#PB_Window_Screencentered|#PB_Window_MinimizeGadget, "Net")
hBrush.l = CreateSolidBrush_(RGB(30,50,80))
SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, hBrush.l)
InvalidateRect_(WindowID(0), #Null, #True)

If CreateGadgetList(WindowID())
ButtonGadget(1, 10, 5,100,20,"Befehl SENDEN")

EndIf 


Repeat 
   
   If WindowEvent() = #PB_EventCloseWindow
    End
  EndIf
  

   
   EventID = WaitWindowEvent()
    
    If EventID = #PB_EventGadget

      Select EventGadgetID()
Case 111
 EndSelect 
 EndIf 
Until EventID = #PB_EventCloseWindow
DeleteObject_(hBrush.l)
End
Leider muss der Code für den Client bisschen umgeprogt werden, weil der so nich richtig funzt... ist aber schon mal so en ansatz!
Dieses Client-Server System läuft natürlich auch über INTERNET!

MfG
kaitec
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Ich hab zwar alles probiert, aber es geht einfach nix, hat denn niemand einen Code den er auf alle Fälle schon positiv getestet hat?

KeyKon
(\/) (°,,,°) (\/)
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

Anleitung:
!!! Achtung Firewall kann den verkehr verhindern !!!!!!!
1. Kompiliere aus beiden Codes eine Exe
2. Starte den Server
3. Starte den Clienten
4. Have fun...

Server:

Code: Alles auswählen

; Autor: freak
; Datum: ?
; Forum: ?
; PB 3.93


; ++++++++++++++++++++++++  Network Server Example +++++++++++++++++++++++++++++++

OpenWindow(0,0,0,300,80, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Network Server")
;von freak
; ++++++++++++++++++++++++  Network Server Example +++++++++++++++++++++++++++++++


CreateGadgetList(WindowID())
StringGadget(0, 5, 5, 290, 25, "")
ButtonGadget(1, 5, 40, 80, 25, "Send")
DisableGadget(1,1)

If InitNetwork() = 0: End: EndIf                       ; Initialize Network Stuff
Socket.l = CreateNetworkServer(6000) 
If Socket = 0: End: EndIf

; The following call will activate this Trick
;
; Socket      : Socket (or Connection ID) is returned by CreateNetworkServer()
; WindowID()  : ID of a Window, to send the Events to.
; #WM_NULL    : The Message to be Send, if a Network Event occurs.
;               #WM_NULL will be ignored, but still causes the WaitWindowEvent() to return,
;               and then the NetworkEvent to be called.
; #FD_ALL     : Event to be send to Callback Procedure, we request them all.

#FD_ALL = #FD_READ|#FD_WRITE|#FD_OOB|#FD_ACCEPT|#FD_CONNECT|#FD_CLOSE
WSAAsyncSelect_(Socket, WindowID(), #WM_NULL, #FD_ALL) 


;Main Loop

Repeat
  Select WaitWindowEvent()
    Case #PB_EventCloseWindow
      End
    Case #PB_EventGadget
      If EventGadgetID() = 1
        text.s = GetGadgetText(0)
        SendNetworkData(NetworkClientID(), @text, Len(text)+1)
      EndIf
  EndSelect
  
  Select NetworkServerEvent()
    Case 1
      DisableGadget(1,0)    ; user connected, enable sending.
    Case 4
      DisableGadget(1,1)    ; user disconnected, disable sending.
  EndSelect
ForEver


; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Client:

Code: Alles auswählen

; Autor: freak
; Datum: ?
; Forum: ?
;PB 3.93



; ++++++++++++++++++++++++  Network Client Example +++++++++++++++++++++++++++++++

OpenWindow(0, 0, 0, 300, 400, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "Network Client")
CreateGadgetList(WindowID())
ListViewGadget(1, 5, 5, 290, 390)

If InitNetwork()=0: End: EndIf                       ; Initialize Network Stuff
ConnID.l = OpenNetworkConnection("127.0.0.1",6000) ;127.0.0.1 = Localhost
If ConnID = 0: End: EndIf

; The following call will activate this Trick
;
; ConnID      : connection ID (from OpenNetworkConnection)
; WindowID()  : ID of a Window, to send the Events to.
; #WM_NULL    : The Message to be Send, if a Network Event occurs.
;               #WM_NULL will be ignored, but still causes the WaitWindowEvent() to return,
;               and then the NetworkEvent to be called.
; #FD_ALL     : Event to be send to Callback Procedure, we request them all.

#FD_ALL = #FD_READ|#FD_WRITE|#FD_OOB|#FD_ACCEPT|#FD_CONNECT|#FD_CLOSE
WSAAsyncSelect_(ConnID, WindowID(), #WM_NULL, #FD_ALL) 


; Main Loop
MessageRequester("", Str(ConnID))
Repeat
  If WaitWindowEvent() = #PB_EventCloseWindow
    End
  EndIf
  If NetworkClientEvent(ConnID) = 2
    text.s = Space(500)
    ReceiveNetworkData(ConnID, @text, 500)
    AddGadgetItem(1,-1,text)  
  EndIf
ForEver



; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Antworten