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

besion d'aide, réseaux.

Calculator_V2
Calculator_V2
Niveau 10
05 octobre 2003 à 22:17:29

Bon, je fais un petit t´chat, ( JY², j´ai solutionné le problème des espace ^^), et...j´ai quelque problème, si quelqu´un s´y connais, qu´il me donne son MSN... svp

bye :)

Lightness1024
Lightness1024
Niveau 10
05 octobre 2003 à 22:37:54

decrit ton probleme ca sera plus amusant ici ke par MSN et tout le monde pourra voir.

Calculator_V2
Calculator_V2
Niveau 10
05 octobre 2003 à 22:40:33

ok, bon, j´ai fait un espèce de tchat. Mais il y a un prblème, tant que tu n´as pas reçu de mzessage, tu ne peu pas envoyer un deuxième mess.

Lightness1024
Lightness1024
Niveau 10
05 octobre 2003 à 22:45:31

ben tu utilises koi pour envoyer tes mess ?
un socket une connexion client-server tout ca etc... ?
developpe

Calculator_V2
Calculator_V2
Niveau 10
05 octobre 2003 à 22:47:01

ok...

voila le code d´envoie/recoit ( enfin basique :)

memset(buffer,0,sizeof(buffer));
cin.getline((char*)buffer, N);
err=send(sock,buffer,sizeof(buffer),0);

memset(buffer,0,sizeof(buffer));
recv(sock,buffer,sizeof(buffer),0);
printf("%s\n",buffer);

Calculator_V2
Calculator_V2
Niveau 10
05 octobre 2003 à 22:47:54

c le même pour client et pour le serveur, c´est le reste qui change....

JeanYvesYves
JeanYvesYves
Niveau 10
05 octobre 2003 à 22:49:30

C a cause du recv : il est bloquant.

Lightness1024
Lightness1024
Niveau 10
05 octobre 2003 à 22:50:59

puf c koa tout ca.
j´ai jamais programmer avec winsock ni rien du tout pour les reseaux d´ailleur mais ca m´empeche pas de trouver ce code pas clair.

ca sert a koi les memset ?

si tu peu pas envoyer 2 messages de suite je suis sur ke ca vient de ta structure de programme, tu dois faire une boucle ki tourne ke si tu recoit un message ou un truc comme ca.

le mieu c´est carrement de faire des threads

Calculator_V2
Calculator_V2
Niveau 10
05 octobre 2003 à 22:52:25

JYY a raison, c´est le revc qui est bloquant....snif....

Et les threads, dsl, mais je ne les connais pas...

i_am_the_law
i_am_the_law
Niveau 6
05 octobre 2003 à 23:58:57

tu peux utiliser WSAAsyncSelect pour des socket non bloquantes ( je crois que sous windows c est ca).

Ca permet de recevoir un msg qd par ex qqc arrive sur la socket, qd elle est fermee...etc

Calculator_V2
Calculator_V2
Niveau 10
06 octobre 2003 à 01:58:19

ok les gars, je vias me renseigner...

ackeur
ackeur
Niveau 8
20 novembre 2003 à 11:26:30

int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);

select est bloquant jusqu´à expiration du délai fourni dans une structure timeval en 5 ème argument, ou jusqu´à que ce que des données
soient présentes sur le descripteur de la socket ( que l´on ajoute à la structure fdset avec la macro FD_SET et que l´on teste avec FD_ISSET)
ça permet ainsi de gérer plusieurs descripteurs de socket en même temps ( comme Lightness1024 l´a dit on pourrait autrement utiliser les threads)

pour ton serveur de tchat, tu pourrais faire quelque chose du genre ( fait à la va-vite):

int main() {
int ret; /* valeur de retour de select */
char buffer[LEN]; /* buffer de LEN octets qui contient les données à lire/réecrire sur le flux du client */
int fd, fa; /* fd sock serveur, fa sock client */
fd_set fds; /* structure fds pour select */
struct timeval tv;
int fs_max;
int end=0; /* incrémenté si déconnexion */
int n; /* nombre d´octets lus avec read */
/* . ..
code d´initialisation du serveur ( bind, listen et accept)
. .. */
while(!end) {
FD_ZERO(&);
FD_SET(fd, &);
fs_max=fd;
FD_SET(fa, &);
if ( fa > fdmax) fs_max = fa;
ret=select(fs_max + 1, &, NULL, NULL, &);
if(ret < 0) exit(-1); /* erreur */
if(ret) /* données disponibles */ {
if(FD_ISSET(fa, &)) { /* des données sont présentes sur fa */
n=read(fa, buffer, sizeof(buffer));
write(fd, buffer, n); /* on les lit puis on les écrit sur fd */
} if(FD_ISSET(fd, &)) { /* données présentes sur fd */
n=read(fd, buffer, sizeof(buffer));
if(strstr("quit", buffer) end++; /* si " quit" présent dans les données lues alors on sort de la boucle */
write(fa, buffer, n); }
} /* . .. */ }

ce code ne gère qu´un seul client et n´est pas compatible ANSI, reste à faire le portage sous windows et à utiliser un tableau dynamique pour
pouvoir gérer plusieurs clients à la fois
un exemple de code, inspiré de l´article d´yves mettier sur le même thème ( paru dans lfm 41): http://www.imats.org/~virgil/releases/chat.c

@+

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