5 #include <sys/socket.h>
7 #include <netinet/in.h>
12 #define LISTEN_PORT 2156
14 unsigned int iptoMid(char *addr) {
18 sscanf(addr, "%d.%d.%d.%d", &i.a, &i.b, &i.c, &i.d);
19 mid = (i.a << 24) | (i.b << 16) | (i.c << 8) | i.d;
24 void midtoIP(unsigned int mid, char *ptr) {
27 i.a = (mid & 0xff000000) >> 24;
28 i.b = (mid & 0x00ff0000) >> 16;
29 i.c = (mid & 0x0000ff00) >> 8;
30 i.d = mid & 0x000000ff;
31 sprintf(ptr, "%d.%d.%d.%d", i.a, i.b, i.c, i.d);
33 printf("DEBUG-> midtoIP() mid = %d.%d.%d.%d\n", i.a, i.b, i.c, i.d);
38 /********** for DEBUGGING **************/
39 char ip[16]; // for debugging purpose
40 char* midtoIPString(unsigned int mid) {
45 /******************************/
49 int checkServer(int mid, char *machineip) {
51 struct sockaddr_in serv_addr;
54 strncpy(m, machineip, strlen(machineip));
55 // Foreach machine you want to transact with
56 // check if its up and running
57 if ((tmpsd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
61 bzero((char*) &serv_addr, sizeof(serv_addr));
62 serv_addr.sin_family = AF_INET;
63 serv_addr.sin_port = htons(LISTEN_PORT);
66 serv_addr.sin_addr.s_addr = inet_addr(m);
67 while (connect(tmpsd, (struct sockaddr *) &serv_addr, sizeof(struct sockaddr)) < 0) {
74 unsigned int getMyIpAddr(const char *interfaceStr) {
76 struct ifreq interfaceInfo;
77 struct sockaddr_in *myAddr = (struct sockaddr_in *)&interfaceInfo.ifr_addr;
79 memset(&interfaceInfo, 0, sizeof(struct ifreq));
81 if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
82 perror("getMyIpAddr():socket()");
86 strcpy(interfaceInfo.ifr_name, interfaceStr);
87 myAddr->sin_family = AF_INET;
89 if(ioctl(sock, SIOCGIFADDR, &interfaceInfo) != 0) {
90 perror("getMyIpAddr():ioctl()");
96 return ntohl(myAddr->sin_addr.s_addr);
106 mid = iptoMid("192.10.0.1");
107 printf("mid = %x\n", mid);