bonjour
Voila j'ai creé un petit jeu qui peut se jouer a deux en reseau
J'y ai integré un petit chat pour pouvoir se parler
J'ai créé un type bacteria qui rassemble toutes les données à transferer :
et je l'envoi avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Type Tbacteria = Record annuler_proposition:boolean; accepter:integer; proposition:boolean; demande_ami_nouvelle_partie:integer; nouveau_pseudo :boolean ; initialisation:integer; af_message:boolean; compose:boolean; ef_compose:boolean; fin_connexion:boolean; pseudo:string[13]; joueur:integer; depart:integer; messages:string[255]; couleur:integer; cases:tableau; joueur_ki_commence:integer; serveur_a_gauche:integer; p1,p2,p3,p4:integer; joue:boolean; version:string[5]; new_couleur_favorite:boolean; couleur_favorite:string[20]; End; var donnees :Tbacteria;
et le recoi avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if form1.host then Serveur.Socket.Connections[0].SendBuf(donnees,SizeOf(donnees)) else Client.Socket.SendBuf(donnees,SizeOf(donnees));
Et tout ca marche bien enfin presque vu que parfois, le client ou le serveur ne recoit plus rien alors qu'il peut quand meme envoyer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Recus :=Socket.ReceiveLength; If Recus<>SizeOf(donnees) Then Exit; Socket.ReceiveBuf(donnees,SizeOf(donnees));![]()
Donc ba le jeu s'arrete et le chat est a sens unique
J'ai essayé de faire :
- avec le serveur je flood volontairement jusqu'a ce que ca se fige (mais ca peut se figer sans flooder)
- le client fini par se figer
- le client peut envoyer les messages au serveur
- le serveur recoit bien le message
- mais quand j'envoi avec le serveur le client ne recoit rien
Pour vérifier que c'été le client qui ne recoit pas et non pas le serveur qui n'envoi pas, j'ai modifié le serveur pour qu'il puisse envoyer a deux clients en meme temps.
Et apres avoir figer le premier client
Je connecte le deuxieme client au serveur
Et la si j'envoi un message avec le serveur :
- le premier client ne recoit toujours rien
- mais le deuxieme client lui recoi correctement
Et aussi avec le debuger j'ai pu voir que une fois le client figé, jamais il n'allait dans la procedure "ClientRead"
Donc ba je ne comprends pas pourquoi le transfert ne se fait plus que dans un sens alors que la conexion est toujours active![]()
J'ai bien pensé a faire un truk anti-flood mais ca peut aussi arriver sans flooder volontairement en tout cas.
Je me suis dit que peut etre, c'été une protection de windows pour empecher les attaques mais bon j'aimerais bien que ca marche quand meme lol![]()
J'espere que certaines personnes auront deja rencontré ce probleme parce que je ne vois pas trop quoi faire :'(
Merci
Partager