begin process at 2012 05 28 13:28:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Réseau & Internet

 > 

Après TCP : UDP


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Après TCP : UDP

mardi 17 février 2009 à 18:59:09 | Après TCP : UDP

TheCamel

Bonjour à tous,

Après de longues années de programmation en C, et d'utilisation des sockets, je suis face à un problème : je dois développer deux programmes (un client et un serveur) qui communiquent entre-eux. La vitesse d'actualisation des données entre les deux programmes est de 4x par seconde. Jusque là pas de problème. Mais il se trouve que ma connexion en TCP est trop lente, et vu le taux d'actualisation, je peux me permettre de perdre un ou deux "paquets" de données et l'ordre des données ne n'importe pas. Je me suis donc essayé à l'UDP. Mais la mise en oeuvre ne m'a pas l'air la même et je n'y arrive pas .

Si vous pouviez m'expliquer comment mettre en oeuvre un serveur et un client en UDP.

Merci d'avance,
Benoît
mardi 17 février 2009 à 22:27:12 | Re : Après TCP : UDP

SebLinck

Des longues année de fumisterie alors ..

Cordialement,
Sébastien.
mercredi 18 février 2009 à 18:20:30 | Re : Après TCP : UDP

TheCamel

Je ne vois pas en quoi ne pas avoir besoin d'utiliser de protocole  UDP est de la fumisterie ...  le plus souvent on me chargeait de chats quand il fallait du réseau.
jeudi 19 février 2009 à 09:47:20 | Re : Après TCP : UDP

SebLinck

Réponse acceptée !
Salut,
alors voilà:
-------------------------------------------------------------------------- SERVEUR
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <netdb.h>
#include <errno.h>
#include <arpa/inet.h>

#define MSGSIZE 500

main(int argc, char **argv)
{
int sockfd, cc, addr_in_size;
u_short portnum = 12345;
struct sockaddr_in *my_addr, *from;
char *msg;
u_long fromaddr;

addr_in_size = sizeof(struct sockaddr_in);

msg = (char *)malloc(MSGSIZE);
from = (struct sockaddr_in *)malloc(addr_in_size);
my_addr = (struct sockaddr_in *)malloc(addr_in_size);

memset((char *)my_addr,(char)0,addr_in_size);
my_addr->sin_family = AF_INET;
my_addr->sin_addr.s_addr = htonl(INADDR_ANY);
my_addr->sin_port = portnum;

if((sockfd = socket (PF_INET, SOCK_DGRAM, 0)) < 0){
fprintf(stderr,"Error %d in socket: %s\n",errno,sys_errlist[errno]);
exit(errno);
};

if(bind(sockfd, (struct sockaddr *)my_addr, addr_in_size) < 0){
fprintf(stderr,"Error %d in bind: %s\n",errno,sys_errlist[errno]);
if(errno != EADDRINUSE) exit(errno);
};

fprintf(stdout,"Ready to receive\n");

while(1){
if((cc = recvfrom (sockfd,msg,MSGSIZE,0,(struct sockaddr *)from,
&addr_in_size)) == -1){
fprintf(stderr,"Error %d in recvfrom: %s\n",
errno,sys_errlist[errno]);
exit(errno);
};
fromaddr = from->sin_addr.s_addr;
msg[cc] = '\0';
fprintf(stdout,"From %s port %d: %s\n",
(gethostbyaddr((char *)&fromaddr,
sizeof(fromaddr),
AF_INET))->h_name,
from->sin_port,msg);

}

}

------------------------------------------------------------------CLIENT
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>

#define MSGSIZE 500

main(int argc,char **argv)
{
int sockfd, ok, addr_in_size;
u_short portnum = 12345;
struct sockaddr_in *to;
struct hostent *toinfo;
char *msg, *htoname = "127.0.0.1";
u_long toaddr;

msg = (char *)malloc(MSGSIZE);
to = (struct sockaddr_in *)malloc(sizeof(struct sockaddr_in));

if((toinfo = gethostbyname(htoname)) == NULL){
fprintf(stderr,"Error %d in gethostbyname: %s\n",
errno,sys_errlist[errno]);
exit(errno);
};
toaddr = *(u_long *)toinfo->h_addr_list[0];

addr_in_size = sizeof(struct sockaddr_in);
memset((char *)to,(char)0,addr_in_size);

to->sin_family = AF_INET;
to->sin_addr.s_addr = toaddr;
to->sin_port = /*(htons)*/portnum;

if((sockfd = socket (PF_INET, SOCK_DGRAM, 0)) == -1){
fprintf(stderr,"Error %d in socket: %s\n",errno,sys_errlist[errno]);
exit(errno);
};

ok = 1;
while(ok){
fprintf(stdout,"Message: ");
scanf("%s",msg);
fprintf(stdout,"\n");
ok = (msg[0] != '0');

if(sendto(sockfd,msg,strlen(msg),0,(struct sockaddr *)to,
addr_in_size) == -1){
fprintf(stderr,"Error %d in sendto: %s\n",errno,sys_errlist[errno]);
exit(errno);
}
}
}

Cordialement,
Sébastien.
jeudi 19 février 2009 à 17:22:58 | Re : Après TCP : UDP

TheCamel

Ah, merci beaucoup.


Cette discussion est classée dans : problème, données, programmes, tcp, udp


Répondre à ce message

Sujets en rapport avec ce message

Socket TCP/UDP [ par hobbes ] Bonjour,j ai cru comprendre qu il existe 2 types de sockets (TCP et UDP) pouvant permettre l echange de donnees entre 2 applications sur le reseau.Pou gros problème base de données [ par skysee ] Salut,j'ai un gros problème avec mase de données.J'utillise le composant ATL pour me connecter à ma base de données.Donc il mes génère 2 classes dont Problème de socket UDP sous linux [ par RaygKross ] Salut à tousMon problème est je dois créer un programme manager snmpLes port de SNMP sont 161 et 162J'initialise ma structure de type sockaddr_in avec recevoir des pages html par tcp via socket - problème [ par jrecan ] Bonjour, alors voila, mon problème n'est pas très compliqué je pense mais il est assez ... bloquant.Je suis actuellment sur un projet proxy http, et m Programme ecoutant le traffic UDP-TCP [ par KoKa ] Bonjour,Je travaille sous linux et je voudrai ecrire un petit programme qui me permette de filtrer le traffic UDP et TCP avec un certain port de desti Probleme de prise de données [ par DeViL_StRiKeR ] Salut tout le mone !J'aimerais savoir pk defois mes programmes deconnent comme par exemple si mon code ressemble a ca :char nom[100];printf("quel est Problème UDP [ par ToToL ] BonjoursJe me suis attaquer il y a peut de temps au socket UDP ( aparament plus rapide que le tcp ) et j'ai un petit souci : je n'arrive pas ds le mem dévlopement d'un proxy (tcp-udp) avec Network Simulator [ par adil_2005 ] est ce que quelqu'un pourra m'indiquer où je peut trouver des exemples de sockets en c++ (merci d'avance :)) adil Utilisation port UDP depuis le port 6667 vers le port 6667... [ par jb60 ] Bonjour, J'essaye de recréer un logiciel qui utilise une connexion internet et qui permet un dialogue avec d'autres personnes sur le net. J'ai donc s Capturer un son [ par Guegue85 ] Bonjours amis du C,Voici mon problème : est-il possible de créer un programme en C qui capture les données de l'entree micro de la carte son en temps


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,326 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales