int result(int choice){ switch(choice){ case 1: getNetAddr(ip,sm,na); getBcastAddr(ip,sm,ba); break; case 2: getSubnetmask(prefix,sm); getNetAddr(ip,sm,na); getBcastAddr(ip,sm,ba); break; case 3: getSubnetmask(host_to_Prefix(hosts),sm); getNetAddr(ip,sm,na); getBcastAddr(ip,sm,ba); break; } printf("\n\n\n\n"); printf("IP: %d.%d.%d.%d\n",ip[0],ip[1],ip[2],ip[3]); printf("Subnet Mask: %d.%d.%d.%d\n",sm[0],sm[1],sm[2],sm[3]); printf("Network: %d.%d.%d.%d\n",na[0],na[1],na[2],na[3]); printf("Broadcast: %d.%d.%d.%d\n",ba[0],ba[1],ba[2],ba[3]); return 0; }
void getBcastAddr(int *ip,int *sm,int *save){ int *temp; temp=(int*)malloc(4*sizeof(int)); *(save)=255-*(sm); *(save+1)=255-*(sm+1); *(save+2)=255-*(sm+2); *(save+3)=255-*(sm+3); getNetAddr(ip,sm,temp); *(save)+=*(temp); *(save+1)+=*(temp+1); *(save+2)+=*(temp+2); *(save+3)+=*(temp+3); free(temp); }
//------------------------------------------------------------------------------ // connectToServer() -- attempt to connect to the server //------------------------------------------------------------------------------ bool TcpClient::connectToServer() { connected = false; connectionTerminated = false; if (ipAddr == nullptr) return false; if (socketNum == INVALID_SOCKET) return false; struct sockaddr_in addr; // Working address structure bzero(&addr, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = getNetAddr(); addr.sin_port = htons(getPort()); if (isMessageEnabled(MSG_INFO)) { std::cout << "Connecting to TCP server at " << ipAddr << ":" << getPort() << " ... " << std::flush; } if (::connect(socketNum, reinterpret_cast<const struct sockaddr*>(&addr), sizeof(addr)) == SOCKET_ERROR) { if (isMessageEnabled(MSG_INFO)) { std::cout << "Failed!" << std::endl; } } else { if (isMessageEnabled(MSG_INFO)) { std::cout << "Connected!" << std::endl; } connected = true; } if (isMessageEnabled(MSG_INFO)) { std::cout << "TcpClient::connectToServer: socketNum = " << socketNum << std::endl; } // Set blocked or no-wait if (noWait) setNoWait(); else setBlocked(); return connected; }