Und was soll mir der Code bringen?
KeyKon
Verbindung übers Internet
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:
Client:
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
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
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
Dieses Client-Server System läuft natürlich auch über INTERNET!
MfG
kaitec
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:
Client:
!!! 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
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page