CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

SDL_Net : multiclient

Glosoli
Glosoli
Niveau 10
27 mars 2014 à 13:59:38

Hello !

Pour un projet perso j'essaie de créer un petit chat en SDL_Net (sockets "simplifiées", attention les puristes :hap: ) et du threading

J'ai un server que je lance sur ma machine, et un programme client (je peux en lancer autant de fois, le serveur reconnaîtra à chaque fois une nouvelle entitée)

Ce que je veux, c'est que Lorsqu'un client envoie un message au serveur, lorsque le serveur rcv ce message, il le renvoie directement aux clients et qu'ils l'affichent à leur tour (grâce à une fonction que rcv en boucle dans le client en thread)

Mon souci est que le serevur renvoie bien le message, mais c'est seulement le client qui a envoyé le message qui le reçoit à nouveau, et je ne comprends pas pourquoi.. Les packets en sont pas dirigés à une seule cible si ? La fonction send envoie à tous les clients connectés au port (1234 ici) ainsi qu'à l'adresse (localhost) ?

Mon code est assez simple (si en plus vous n'avez jamais traité SDL_net, c'est aussi simple)

server :d) http://pastebin.com/LzAtZQ7d
client :d) http://pastebin.com/3GN9VaT3

compilation : gcc -Wall -pedantic -o server ou name server.c ou name.c -lSDL_net -pthread

lokilok
lokilok
Niveau 16
27 mars 2014 à 14:29:22

Je vois pas ou tu envoi le messages a tes clients, je vois bien la ligne udp_send j'sais plus quoi mais tu lui passe en paramètre uniquement ton port, -1 (je sais pas a quoi ça correspond, je connais pas bien la sdl) et le packet que tu viens de recevoir.

Sinon pour un chat utilise pas udp c'est un conseil, c'est pas vraiment fait pour, utilise plutôt TCP.

Glosoli
Glosoli
Niveau 10
27 mars 2014 à 17:42:33

Je sais que l'UDP est pas opti pour ça, j'sais pas pourquoi j'ai pris ça d'ailleurs..

Et oui voilà, le serveur a le sdl_net_send et il renvoie le packet sur le port, mais le port est utilisé par les deux clients, ils sont censés le recevoir tous les deux, non ?

lokilok
lokilok
Niveau 16
27 mars 2014 à 19:48:04

Je ne pense pas non, ça serait bizarre si ça le faisait, surtout qu'avec udp t'as pas de connexion avant l'envoi des packet (contrairement au TCP).

Glosoli
Glosoli
Niveau 10
27 mars 2014 à 20:17:21

Effectivement, je dois faire un Send pour chaque client, je change le troisième argument et je fous l'adresse du client dedans, et tout s'envoie à merveille :coeur:

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment