[C] Socket UDP connaitre le port source ???

Socket UDP connaitre le port source ??? [C] - C++ - Programmation

Marsh Posté le 06-06-2003 à 11:45:45    

Salut !
 
J'ai de nouveau un petit pb avec mes sockets UDP
Voilà j'aimerais connaitre le port source lorsque que je crée une socket UDP.
 
Dans le code on précise l'adresse Ip et le port cible mais ya t'il moyen d'imposer le port source ou alors de le récuperer par le descripteur de la socket  :??:  
 
des idées ou la solution ??
 
merci

Code :
  1. #include<stdio.h>
  2. #include<winsock2.h>
  3. #pragma comment(lib,"ws2_32.lib" )
  4. void main()
  5. {
  6. WSADATA wsa;
  7. WSAStartup(MAKEWORD(2,0),&wsa);
  8. SOCKET sock;
  9. SOCKADDR_IN sin;
  10. system("TITLE UDP Packet Sender" );
  11. char ip[15]="150.1.0.50";
  12. int i,port=161;
  13. printf("Ip %s\n",ip);
  14. printf("Port : %i\n",port);
  15. sin.sin_family=AF_INET;
  16. sin.sin_addr.s_addr=inet_addr(ip);
  17. sin.sin_port=htons(port);
  18. sock=socket(AF_INET,SOCK_DGRAM,0);
  19. bind(sock,(SOCKADDR*)&sin,sizeof(sin));
  20. char buffer_bridge[40];
  21.        while(1)
  22. {
  23. memset(buffer_bridge,0,sizeof(buffer_bridge));
  24. sendto(sock,buffer_bridge,sizeof(buffer_bridge),0,(SOCKADDR*)&sin,sizeof(sin));
  25. }
  26. }


Message édité par k-id le 06-06-2003 à 11:49:58
Reply

Marsh Posté le 06-06-2003 à 11:45:45   

Reply

Marsh Posté le 06-06-2003 à 14:29:22    

personne n'a une petite idée ? j'y arrive tjs pas...  :cry:

Reply

Marsh Posté le 06-06-2003 à 20:52:37    

tu es sur que ton code est bon la ?
pourquoi tu veux connaitre le port source ?
 
 

Code :
  1. WSADATA wsa;
  2.      WSAStartup(MAKEWORD(2,0),&wsa);
  3.    
  4.      SOCKET sock;
  5.      SOCKADDR_IN sin;

 
genial ton compilo, tu utilises quoi ?


Message édité par xWillow le 06-06-2003 à 20:56:31
Reply

Marsh Posté le 06-06-2003 à 20:57:37    

ah non ok tu compiles en c++ du code c ok

Reply

Marsh Posté le 06-06-2003 à 21:16:38    

Quand tu fais un bind, tu fixes le port source. Donc tu l'as [:proy]

Reply

Marsh Posté le 10-01-2008 à 09:54:44    

J'ai le même problème :
 
J'envoie une trame en broadcast sur le réseau avec un port destination spécifié.
Des composants réseaux sont censés répondre à cette trame en envoyant la réponse à mon adresse sur le port auquel j'ai envoyé. Je suis donc censé récupérer les trames de réponses sur le même port que celui sur lequel j'ai envoyé.
 
En gros :
- j'ouvre une socket UDP en émission
- j'envoie une trame
- j'ouvre une socket UDP en réception sur le même port que le port d'émission que la socket d'avant
- je reçoit une trame (ou plusieurs) de réponse
 
Problème :
Peut-on spécifier le port d'émission (auquel cas j'utilise le même pour la socket de réception) ?
OU Peut-on récupérer le port d'émission utilisé (auquel cas je peux spécifier le port de réception) ?
 
Je précise que je suis incapable de toucher au composant de l'autre côté (il s'agit d'un Lantronix Xport)
 
Merci d'avance !

Reply

Marsh Posté le 10-01-2008 à 12:05:25    

J'ai trouvé mon problème (en gros il suffit de "binder" la socket, même si on l'utilise comme client)
 
Par contre j'ai un autre problème, mais je vais poster dans un autre post ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed