Infos sur le réseau

Sujets variés concernant le développement en PureBasic
LeCyb
Messages : 273
Inscription : dim. 26/déc./2004 20:49

Infos sur le réseau

Message par LeCyb »

J'aimerais en savoir plus sur le fonctionnement du réseau avec PB.

Je ne recherche pas de la doc technique sur les réseaux mais plutôt des explications sur le fonctionnement de la lib network.

Par exemple, si il se produit une déconnexion avant ou pendant l'utilisation d'une fonction, que se passe-t-il ?

Code : Tout sélectionner

InitNetwork()
res = OpenNetworkConnection(server, port)
SendNetworkString(res, "pouet")

;ici une déco vient de se produire

Repeat
  Delay(1)
Until NetworkClientEvent(res) <> 0
On boucle à l'infini ? Ca crash ? Autre ?

Que se passe-t-il si on essaye d'envoyer/reçevoir si y'a une déco ?
Autrement dit, comment gérer les erreurs réseau proprement ?

Est-ce que lors d'un seul transfert (disons un gros SendNetworkString) NetworkClientEvent pourrait donner plusieurs fois un événement #PB_NetworkEvent_Data ?

Comment la différence est faite entre l'envoi d'un fichier et des données ?
Est-il possible d'envoyer un paquet de données et que la fonction se trompe de résultat si le paquet correspond au "marquage" de l'envoi de fichier ?

Comment ReceiveNetworkData peut-il savoir si il y a encore des données à reçevoir en cas de "lag" ?

GetClientIP est normalement utilisé pour récupérer l'adresse IP en mode serveur mais j'ai remarqué que cela fonctionne aussi en mode client, est-ce fiable ?
Par contre GetClientPort ne donne aucun des deux ports (local et distant) utilisé par une connexion en mode client. Si GetClientIP fonctionne en mode client, pourquoi pas GetClientPort ?

J'en ai des tas comme ça, mais déjà si celles-ci pouvaient être éclairées je serais heureux :)
Dernière modification par LeCyb le sam. 22/avr./2006 23:20, modifié 1 fois.
Vive le thread-safe !
Anonyme

Message par Anonyme »

je vais essayer de répondre à une de tes questions.

Si le serveur crash après la connection d'un client :

j'utilise une fonction Icmpsendecho_() ou qq comme ca... , c dispo sur le forum. cela envois un ping au serveur, si le ping dépasse un certain delais alors je déconnecte mon client propremement.

pour le reste , je laisse les plus "pro" pour expliquer corectement, en plus ,j'dois sortir mon chien :D

@++
LeCyb
Messages : 273
Inscription : dim. 26/déc./2004 20:49

Message par LeCyb »

Ouais mais je vais pas tester toutes les deux lignes pour savoir si la connexion est toujours ok.
Cela impliquerait de tester avant chaque utilisation d'une fonction réseau, y compris les boucles d'évenement.

Si on est obligé de faire comme ça autant dire qu'il est impossible de faire du réseau avec PB car cela doublerait la taille du code et le temps d'exécution.
Vive le thread-safe !
Anonyme

Message par Anonyme »

non, tu le fait dans un thread , a intervalle régulier ( toutes les 5 secondes par exemple)
LeCyb
Messages : 273
Inscription : dim. 26/déc./2004 20:49

Message par LeCyb »

Les threads j'en bouffe déjà un paquet :p

C'est dans le cadre d'une application multi-serveurs, multi-thread, multi-connexion et multi-DB, avec la mise à jour de l'interface graphique pour tout ces éléments que ça me pose le problème.

Alors si je dois gérer encore des threads pour chaque connexion, plus des timers et gérer la liaison des erreurs ça va plus me pourrir la vie qu'autre chose.
Vive le thread-safe !
Anonyme

Message par Anonyme »

Pour moi , c'est la seule solution qu'a un client de connaitre l'état du serveur. le réseau est complexe en générale, beaucoup pensent que c'est simple en voyant des commandes "simplistes" or c'est faux, faut quand même faire des routines qui tienne la route.
Répondre