Page 1 sur 3

Cut&Glue / SendNetworkfile

Publié : dim. 21/août/2011 15:02
par Anonyme 2
Yo,
J'aimerais un code OPERATIONNEL contenant les commandes SendNetworkFile() et ReceiveNetworkFile(), et des explications avec, merci!

PS: j'ai essayer plusieurs fois de les faire marchers en utilisant des codes fournis avec le manuel, mais je n'y suis jamais arrivé..

Re: Networkfile

Publié : dim. 21/août/2011 16:57
par Atlante
Tu abuses ! Si tu arrives pas a faire fonctionner des codes avec sendnetworkfile et receiveNetworkFile : c'est que tu ne prends pas la peine de chercher !

De chercher tout cours devant ton écran ! Et sur le forum !
Si tu prends pas la peine de poster du code et de dire où tu bloques cela sert à rien.
Prochain post comme ça où tu passes ta commande je LOCK direct.

Cordialement.

Atlante.

Re: Networkfile

Publié : dim. 21/août/2011 19:05
par Backup
............

Re: Networkfile

Publié : dim. 21/août/2011 19:19
par falsam
@Dobro :J'ai cru que j'avais loupé une annonce !!! A priori il est bien modérateur comme on peut le voir sur ce lien mais qui peut bien se cacher derrière hein ? Inscrit depuis juin, moins de 10 messages. Un hacker tu crois ? :p

Re: Networkfile

Publié : dim. 21/août/2011 19:24
par Backup
................

Re: Networkfile

Publié : dim. 21/août/2011 19:30
par G-Rom
c'est un pote à Fred. Rien de grave les gars.
mieux vaut un modo actif. ;)

Re: Networkfile

Publié : dim. 21/août/2011 19:31
par Backup
...........

Re: Networkfile

Publié : dim. 21/août/2011 19:41
par falsam
G-Rom a écrit :c'est un pote à Fred. Rien de grave les gars.
mieux vaut un modo actif. ;)
Pote ou pas, Atlante pourrait être moins radical dans ses interventions. J’espère qu'il a l'estomac solide :)

Re: Networkfile

Publié : dim. 21/août/2011 20:05
par G-Rom
Pote ou pas, Atlante pourrait être moins radical dans ses interventions.
je ne vois pas de "radicalité" dans ces interventions.
certes , mais une présentation aurai ete la moindre des choses non ?
Sur le fond , je suis d'accord avec toi, mais dans l'absolu , a t'ont besoin de savoir comment il s'appelle , que prend t'il au petit dej ou avec quelle marque de pq il s'essuie ?

Re: Networkfile

Publié : dim. 21/août/2011 20:21
par Ar-S
Je suis content qu'un modo vienne enfin intervenir dans les topics, on se sans moins abandonné.
Pour rejoindre Dobro, un simple "bonjour je suis le nouveau modo" aurait été sympa.
Sur ce bienvenue Atlante.

Re: Networkfile

Publié : dim. 21/août/2011 21:45
par Atlante
Bonjour,

Pour vous rassurer : je me suis présenté dans le forum discution générale annonce.
Je ne voulai pas créer une petite polémique, tout ce que je souhaite c'est que le forum tourne bien ;)
C'est pour cela que les post comme celui ci m'insuporte : Le forum a une fonction rechercher et ensuite s'il veut que tout le travail lui soit fait dans ce cas il paye un développeur.

Comment aider une personne qui ne dit pas où elle bloque ?
Sinon oui j'ai l'estomac solide, mais moins les intestins mdr ;)

Re: Networkfile

Publié : dim. 21/août/2011 22:06
par Backup
..............

Re: Networkfile

Publié : lun. 22/août/2011 16:30
par Anonyme 2
...

Re: Networkfile

Publié : lun. 22/août/2011 16:55
par Atlante
Je viens de regarder l'aide les deux exemples. Il suffit que tu ajoutes un sendnetworkfile dans l'exemple client.
Dans l'exemple serveur juste modifier le nom en reception.

Je vais te prouver que tu as pas cherché beaucoup :

Serveur :

Code : Tout sélectionner


; ------------------------------------------------------------
;
;   PureBasic - Network (Server) example file
;
;    (c) 2003 - Fantaisie Software
;
; ------------------------------------------------------------
;

If InitNetwork() = 0
  MessageRequester("Error", "Can't initialize the network !", 0)
  End
EndIf

Port = 6832
*Buffer = AllocateMemory(1000)

If CreateNetworkServer(0, Port)

  MessageRequester("PureBasic - Server", "Server created (Port "+Str(Port)+").", 0)
  
  Repeat
      
    SEvent = NetworkServerEvent()
  
    If SEvent
    
      ClientID = EventClient()
  
      Select SEvent
      
        Case #PB_NetworkEvent_Connect
          Debug "A new client has connected !"
  
        Case #PB_NetworkEvent_Data
          Debug "Client "+Str(ClientID)+" has send a packet !"
          ReceiveNetworkData(ClientID, *Buffer, 1000)
          MessageRequester("Info", "String: "+PeekS(*Buffer), 0)
  
        Case #PB_NetworkEvent_File
          Debug "Client "+Str(ClientID)+" has send a file via the network !"
          If ReceiveNetworkFile(ClientID, "D:\TEST_bis.txt")
            Debug "fichier reçu"
          EndIf
          
        Case #PB_NetworkEvent_Disconnect
          MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has closed the connection...", 0)
          Quit = 1
    
      EndSelect
    EndIf
    
  Until Quit = 1 
  
  MessageRequester("PureBasic - Server", "Click to quit the server.", 0)
  
  CloseNetworkServer(0)
Else
  MessageRequester("Error", "Can't create the server (port in use ?).", 0)
EndIf

  
End   

Client :

Code : Tout sélectionner

;
; ------------------------------------------------------------
;
;   PureBasic - Network (Client) example file
;
;    (c) 2003 - Fantaisie Software
;
; ------------------------------------------------------------
;

If InitNetwork() = 0
  MessageRequester("Error", "Can't initialize the network !", 0)
  End
EndIf

Port = 6832

ConnectionID = OpenNetworkConnection("127.0.0.1", Port)
If ConnectionID
  MessageRequester("PureBasic - Client", "Client connected to server...", 0)
  
    
  If SendNetworkFile(ConnectionID, "D:\test.txt")
Debug "fichier envoyé"
  EndIf
  
  MessageRequester("PureBasic - Client", "Cliquez sur ok pour quitter", 0)
  CloseNetworkConnection(ConnectionID)
Else
  MessageRequester("PureBasic - Client", "Can't find the server (Is it launched ?).", 0)
EndIf
  
End   

Re: Networkfile

Publié : lun. 22/août/2011 17:17
par falsam
Serveur : enregistre sous et crées un exécutable du code ci-dessous. Si tu es sous Vista ou Window7, ouvre la boite de dialogue Option du compilateur accessible depuis le menu compilateur et coches la case L'application nécessite les droits administrateurs.

Code : Tout sélectionner

;Server
EnableExplicit

Enumeration
  #MainForm
  #Server
  #ServerLog
  #ServerMessage
EndEnumeration

Global Port.i, *Buffer.i, WEvent.l, NEvent.l, ClientID.l

Port = 6832
*Buffer = AllocateMemory(1000)


;Affichage de la fenetre principale de l'application
OpenWindow(#MainForm, 0, 0, 500, 500, "Mon serveur")
ListViewGadget(#ServerLog, 10, 10, 480, 420)
TextGadget(#PB_Any, 10, 453, 50, 22, "Message :")
StringGadget(#ServerMessage, 70, 450, 420, 22, "Serveur inactif", #PB_String_ReadOnly)

;Initialisation de l'environnement Network
If InitNetwork() = 0
  SetGadgetText(#ServerMessage, "Aucune pile TCP/IP n'est disponible sur le système.")
EndIf

;Crée un nouveau serveur réseau sur l'ordinateur local sur le port spécifié
If CreateNetworkServer(#Server, Port)

  SetGadgetText(#ServerMessage, "Serveur actif sur le port "+Str(Port)+".")
  
  Repeat
    WEvent = WindowEvent()  
    NEvent = NetworkServerEvent()
    
    ;Evenements Network
    If NEvent
      ClientID = EventClient()
      
      Select NEvent
        Case #PB_NetworkEvent_Connect ;Un client se connecte
          AddGadgetItem(#ServerLog, -1, "Le client ("+Str(ClientID)+") se connecte.")
          
        Case #PB_NetworkEvent_Data ;Un client envoie des données
          AddGadgetItem(#ServerLog, -1, "Le client ("+Str(ClientID)+") envoie des données.")
          ReceiveNetworkData(ClientID, *Buffer, 1000)
          AddGadgetItem(#ServerLog, -1, "String: "+PeekS(*Buffer))
          FillMemory(*Buffer, 1000)
          
        Case #PB_NetworkEvent_File ;Un client envoie un fichier
          AddGadgetItem(#ServerLog, -1, "Client "+Str(ClientID)+" envoie un fichier.")
          ReceiveNetworkFile(ClientID, "test2.txt")
          
        Case #PB_NetworkEvent_Disconnect ;Un client se deconnecte
          AddGadgetItem(#ServerLog, -1, "Le Client ("+Str(ClientID)+") se deconnecte.")
    
      EndSelect          
    EndIf
    
    ;Evenements Windows
    Select WEvent  
      Case #PB_Event_CloseWindow
        CloseNetworkServer(#Server)
        End
    EndSelect

  ForEver
    
Else
  MessageRequester("Erreur", "Imposible de créer le serveur,"+#CRLF$+"Le port "+Str(Port)+" est peut être en cours d'utilisation")
EndIf
Une fois que ton serveur est lancé, vérifies que tu y accèdes depuis ton navigateur internet en tapant dans l'adresse url son adresse ip + port. Etant en local l'adresse sera 127.0.0.1:6832.
Ton serveur devrait indiquer qu'un client se connecte.

Client : Compile et crées un exécutable du code ci-dessous que tu placeras pour le moment dans le même dossier que ton serveur. (C'est l'exemple qui se trouve dans la documentation de Pure basic)

Code : Tout sélectionner

If InitNetwork() = 0
  MessageRequester("Error", "Can't initialize the network !", 0)
  End
EndIf

IP.s = "127.0.0.1"
Port = 6832

ConnectionID = OpenNetworkConnection(IP, Port)
If ConnectionID
  SendNetworkFile(ConnectionID, "test1.txt")
  CloseNetworkConnection(ConnectionID)
Else
  MessageRequester("PureBasic - Client", "Can't find the server (Is it launched ?).", 0)
EndIf
  
End
Crées un fichier texte (Ex : test1.txt) et place le dans le même dossier que ton client.


Pour résumé tu dois avoir dans un même dossier
-Ton programme server.exe compiler avec l'option droit administrateur.
-Ton programme client.exe
-Un fichier test1.txt

Lance le serveur puis le client.
Si tout se passe bien, tu as maintenant un fichier test2.txt

Fin du test en local :)

P.S. Atlante désolé, j'ai été long à la rédaction.