Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
sena dummy mioche

Inscrit le: 13 Fév 2003 Messages: 2
|
Posté le: Jeu Fév 13, 2003 10:16 pm Sujet du message: Client-Serveur UDP port local |
|
|
Salut
j'ai fait un Serveur UDP et un client UDP.
Ces programmes fonctionnent quand ils sont chacun sur 1 PC différent.
Pour 1 raison particulière j'ai besoin d'avoir ces progs qui tournent sur le même PC.
En clair mon client envoi sur le port n°11060 à l'adresse 127.0.0.1 (eh ouai fo que je me l'envoi !)
Et mon serveur lit sur le port n°11060.
Et bien ca marche pas ! Mon serveur ne recoit rien.
Quelqu'un peut t'il me dire pourquoi?
Comment remédier à ce pb?
Merci. |
|
Revenir en haut |
|
 |
Salemioche salemioche


Inscrit le: 05 Avr 2002 Messages: 350 Localisation: FR- BIOT
|
Posté le: Ven Fév 14, 2003 9:43 am Sujet du message: |
|
|
si ca marche sur deux machines distantes il n'y a pas de raison que ca ne marche pas en local. le probleme doit etre ailleurs (port deja utilisé...) _________________ Creer son site - Hebergement - Jumeaux |
|
Revenir en haut |
|
 |
sena dummy mioche

Inscrit le: 13 Fév 2003 Messages: 2
|
Posté le: Ven Fév 14, 2003 10:25 am Sujet du message: |
|
|
bah non je ne change que l'adresse ip du destinataire.
J'ai mis le source de mon test si quelqu'un peut me renseigner...
En fait le client envoi trois char et le serveur les recoit et les affiches.
/************ CLIENT***************/
#include<stdio.h>
#include<winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#define NBMAX_CAR 4
void main()
{
WSADATA wsa;
WSAStartup(MAKEWORD(2,0),&wsa);
SOCKET sock;
SOCKADDR_IN sin;
printf("Cette machine est le client UDP\n\n");
printf("Elle envoie les packets\n\n");
//Variables
char ip[15] = "127.0.0.1"; //L'adresse IP du destinataire
int port = 11060; //Le n° de port
char buffer[NBMAX_CAR]; //Pour stocker les packets à envoyer
//On informe la structure
sin.sin_family=AF_INET;
sin.sin_addr.s_addr=inet_addr(ip);
sin.sin_port=htons(port);
//préparation de l'envoi
sock=socket(AF_INET,SOCK_DGRAM,0); //On initialise le socket avec SOCK_DGRAM pour dire qu'on est en UDP
bind(sock,(SOCKADDR*)&sin,sizeof(sin)); //Lisaison entre la structure et la socket
//On initialise le tablo buffer[]
memset(buffer,0,sizeof(buffer));
//Remplissage du tablo buffer[]
buffer[0] = 0x41; // 'A'
buffer[1] = 0x42; // 'B'
buffer[2] = 0x43; // 'C'
buffer[3] = NULL;
sendto(sock,buffer,sizeof(buffer),0,(SOCKADDR*)&sin,sizeof(sin));
}
/*************** SERVEUR****************/
#include<stdio.h>
#include<winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#define NBMAX_CAR 4
void main()
{
WSADATA wsa;
WSAStartup(MAKEWORD(2,0),&wsa);
SOCKET sock;
SOCKADDR_IN sin;
printf("Cette machine est le Serveur UDP\n\n");
printf("Elle recoit les packets\n\n");
//Variables
int port = 11060; //Ne pas init. si demande au user.
char buffer[NBMAX_CAR];//Pour stocker les packets à envoyer
//On informe la structure
sin.sin_family=AF_INET;
sin.sin_addr.s_addr=INADDR_ANY;
sin.sin_port=htons(port);
//On initialise le socket avec SOCK_DGRAM pour dire qu'on est en UDP
sock=socket(AF_INET,SOCK_DGRAM,0);
bind(sock,(SOCKADDR*)&sin,sizeof(sin));
int sinsize=sizeof(sin);
while(1)
{
memset(buffer,0,sizeof(buffer));
recvfrom(sock,buffer,sizeof(buffer),0,(SOCKADDR*)&sin,&sinsize);
printf("Recu : %s\n",buffer);
}
} |
|
Revenir en haut |
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
|