[JAVA] Traduire l'adresse IP

Histoire originale Histoire originale 2

IP à int

static int toInt(int b0, int b1, int b2, int b3){
    int l = b0 << 24;
    l += b1 << 16;
    l += b2 << 8;
    l += b3;
    return l;
}

int à IP

static void printIPAddress(int i){
    int b0 = (i >> 24) & 0xff;
    int b1 = (i >> 16) & 0xff;
    int b2 = (i >> 8) & 0xff;
    int b3 = i & 0xff;
    System.out.printf("%d.%d.%d.%d%n", b0, b1, b2, b3);
}

Exemple de code

sample.c


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

int
main(int argc, char *argv[])
{
 struct sockaddr_in server;
 int sock;
 char buf[32];
 char *deststr;
 int n;

 if (argc != 2) {
         printf("Usage : %s dest\n", argv[0]);
         return 1;
 }
 deststr = argv[1];

 sock = socket(AF_INET, SOCK_STREAM, 0);

 server.sin_family = AF_INET;
 server.sin_port = htons(12345);

 server.sin_addr.s_addr = inet_addr(deststr);
 if (server.sin_addr.s_addr == 0xffffffff) {
         struct hostent *host;

         host = gethostbyname(deststr);
         if (host == NULL) {
                 return 1;
         }
/*
         server.sin_addr.s_addr =
             *(unsigned int *)host->h_addr_list[0];
*/
         printf("%d\n", *(unsigned int *)host->h_addr_list[0]);
         printf("%d\n", *(unsigned int *)host->h_addr_list[1]);

         int i = 0;
         for(i = 0; i < 2; i++) {
          int ip1 = *(unsigned int *)host->h_addr_list[i];
          int b0 = (ip1 >> 24) & 0xff;
          int b1 = (ip1 >> 16) & 0xff;
          int b2 = (ip1 >> 8) & 0xff;
          int b3 = ip1 & 0xff;
          printf("%d.%d.%d.%d\n", b0, b1, b2, b3);
         }
 }
}

Pour vérifier multi dans host.conf

Recommended Posts

Traduire l'adresse IP
Configuration de l'adresse IP CentOS
Obtenir le pays à partir de l'adresse IP (Java)
Adresse IP interférée avec le pont Docker