Ok - j'essaie donc de faire fonctionner une socket de bienvenue pour IPv6 avec C++. Le problème est que le port sur lequel il écoute semble changer chaque fois que je démarre le programme.Problèmes de port IPv6 C++
#include <iostream>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <arpa/inet.h>
int main(int argc, char *argv[]){
//Setting up the serverAddr:
struct sockaddr_in6 serverAddr;
memset((char *)&serverAddr, 0, sizeof(sockaddr_in6));
serverAddr.sin6_family = AF_INET6; // IP6 is best current practise.
serverAddr.sin6_addr = in6addr_any; // Don't care for interfaces.
serverAddr.sin6_port = htons(7979); // FIXME change port later.
//Opening the welcomeSocket:
std::cout << "Opening socket:\t";
int welcomeSocket = socket(AF_INET6, SOCK_STREAM, 0);
if(welcomeSocket < 0){
std::cout << "[FAIL]" << std::endl;
return 1;
}else{
std::cout << "[ OK ]" << std::endl;
}
//Listening for clients:
while(welcomeSocket >= 0){
std::cout << "Listening for connections…" << std::endl;
listen(welcomeSocket, 1);
struct sockaddr_in6 clientAddr;
memset((char *)&clientAddr, 0, sizeof(sockaddr_in6));
int clientAddrLength = sizeof(clientAddr);
int clientSocket = accept(welcomeSocket, (struct sockaddr*) &clientAddr, (socklen_t*) &clientAddrLength);
char caddr[INET6_ADDRSTRLEN]; //caddr is not lisp here.
inet_ntop(AF_INET6, &clientAddr, caddr, INET6_ADDRSTRLEN);
std::cout << "Request from '" << caddr << "'" << std::endl;
shutdown(clientSocket, SHUT_RDWR);
clientSocket = -1;
shutdown(welcomeSocket, SHUT_RDWR);
welcomeSocket = -1;
}
return 0;
}
Je compilez le code via g ++ server.cpp -o serveur, et quand je lance ./server je reçois la sortie suivante:
$ ./server
Opening socket: [ OK ]
Listening for connections…
Request from 'a00:c158::'
Pour tester le code que je lance nmap:
$ nmap -6 -p 1-65535 ::1
Starting Nmap 5.21 (http://nmap.org) at 2012-06-09 16:43 CEST
Nmap scan report for ip6-localhost (::1)
Host is up (0.00023s latency).
Not shown: 65532 closed ports
PORT STATE SERVICE
22/tcp open ssh
631/tcp open ipp
56160/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 1.41 seconds
Je pense que je néglige quelque chose de simple.
Merde ... J'oublièrent la liaison o.O‽ m ( - Je vais vérifier et je pense que je peux accepter que votre réponse Merci de me aider :) –
@JakobRunge: Bien sûr.. N'oubliez pas de 'écouter()' aussi. – Linuxios
... comme dans la deuxième ligne du bloc while? .) –