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 int checkServer(int mid, char *machineip) {
40 struct sockaddr_in serv_addr;
43 strncpy(m, machineip, strlen(machineip));
44 // Foreach machine you want to transact with
45 // check if its up and running
46 if ((tmpsd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
50 bzero((char*) &serv_addr, sizeof(serv_addr));
51 serv_addr.sin_family = AF_INET;
52 serv_addr.sin_port = htons(LISTEN_PORT);
55 serv_addr.sin_addr.s_addr = inet_addr(m);
56 while (connect(tmpsd, (struct sockaddr *) &serv_addr, sizeof(struct sockaddr)) < 0) {
63 unsigned int getMyIpAddr(const char *interfaceStr)
66 struct ifreq interfaceInfo;
67 struct sockaddr_in *myAddr = (struct sockaddr_in *)&interfaceInfo.ifr_addr;
69 memset(&interfaceInfo, 0, sizeof(struct ifreq));
71 if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
73 perror("getMyIpAddr():socket()");
77 strcpy(interfaceInfo.ifr_name, interfaceStr);
78 myAddr->sin_family = AF_INET;
80 if(ioctl(sock, SIOCGIFADDR, &interfaceInfo) != 0)
82 perror("getMyIpAddr():ioctl()");
88 return ntohl(myAddr->sin_addr.s_addr);
98 mid = iptoMid("192.10.0.1");
99 printf("mid = %x\n", mid);