récupérer le port source, conversion

récupérer le port source, conversion - C++ - Programmation

Marsh Posté le 13-05-2005 à 08:48:14    

Bonjour,
Je voudrais savoir comment faire pour récupérer le numéro de port source & destinataire d'une trame Ethernet.
J'utilise la librairie pcap, sous linux, et je nai pas oublié d'inclure la bibliotheque <netinet/tcp.h>.
j'ai déjà essayer, mais je n'arrive pas à le faire.

Code :
  1. char datagram[4096];
  2. struct ip * ip_info = (struct ip *)datagram;
  3. struct tcphdr * tcp_hdr = (struct tcphdr *)(datagram + sizeof(struct ip));
  4. this->srcPort = ntohs(tcp_hdr->th_sport);     //port source
  5. this->dstPort = ntohs(tcp_hdr->th_dport);     //port destinataire


 
et voici les erreur que sa m'affiche
 
`struct tcphdr` has no member named `th_sport`
`struct tcphdr` has no member named `th_dport`

 
pouvez vous me dire ou se trouve mon erreur, ou si je suis partie sur une mauvaise piste :pt1cable:


Message édité par transistor49 le 26-05-2005 à 14:22:15
Reply

Marsh Posté le 13-05-2005 à 08:48:14   

Reply

Marsh Posté le 26-05-2005 à 14:20:32    

j'ai une deuxieme question a posé, cele qui est en haut est oujours d'actualité.
je voudrais savoir, comment on converti un QString en char*, je demande bien char* et non pas const char*, car j'ai déjà essayer de faire le attribut.ascii() et sa ne marche pas, il me donne un const char*.
snon, j'ai réussi a convertir un QString en char, si vous savez comment passez d'un char en char *, se serai simpa.

Reply

Marsh Posté le 26-05-2005 à 14:33:01    

tu copies ce qui est pointé par le const char* dans un tableau, mais bon...
c'est du C ??

Reply

Marsh Posté le 26-05-2005 à 14:34:17    

Pour "convertir" en char *, il te faut allouer un buffer pour stocker tes char, et recopier ta QString dedans, puis libérer quand tu as fini...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 26-05-2005 à 15:09:33    

a bon? et tu fait comment?

Reply

Marsh Posté le 26-05-2005 à 16:28:46    

tu alloues avec new [], tu copies avec std::copy() ou strcpy() et tu libères avec delete [].


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

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