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);
35 int checkServer(int mid, char *machineip) {
37 struct sockaddr_in serv_addr;
40 strncpy(m, machineip, strlen(machineip));
41 // Foreach machine you want to transact with
42 // check if its up and running
43 if ((tmpsd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
47 bzero((char*) &serv_addr, sizeof(serv_addr));
48 serv_addr.sin_family = AF_INET;
49 serv_addr.sin_port = htons(LISTEN_PORT);
52 serv_addr.sin_addr.s_addr = inet_addr(m);
53 while (connect(tmpsd, (struct sockaddr *) &serv_addr, sizeof(struct sockaddr)) < 0) {
60 unsigned int getMyIpAddr(const char *interfaceStr)
63 struct ifreq interfaceInfo;
64 struct sockaddr_in *myAddr = (struct sockaddr_in *)&interfaceInfo.ifr_addr;
66 memset(&interfaceInfo, 0, sizeof(struct ifreq));
68 if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
70 perror("getMyIpAddr():socket()");
74 strcpy(interfaceInfo.ifr_name, interfaceStr);
75 myAddr->sin_family = AF_INET;
77 if(ioctl(sock, SIOCGIFADDR, &interfaceInfo) != 0)
79 perror("getMyIpAddr():ioctl()");
85 return ntohl(myAddr->sin_addr.s_addr);
95 mid = iptoMid("192.10.0.1");
96 printf("mid = %x\n", mid);