#include #include #include #include #include #include #include #include #include #include int main (int argc, char** argv) { if (argc != 6) { cout << "speedC <# of times> <# of bytes> \n"; cout << "\twhere socktype: \n\t\t1 -> SOCK_STREAM\n\t\t2 -> SOCK_CLUSTER\n"; return 1; } int socktype = atoi(argv[1]); if ((socktype <= 0) || (socktype > 2)) { cout << "Socktype must be 1 for SOCK_STREAM or 2 for SOCK_CLUSTER\n"; return 1; } int sockDeclVal = 0; switch(socktype) { case 1: sockDeclVal = SOCK_STREAM; break; case 2: sockDeclVal = SOCK_CLUSTER; break; } int numTests = atoi(argv[2]); int numBytes = atoi(argv[3]); char* machineName = argv[4]; int port = atoi(argv[5]); struct hostent* host = gethostbyname(machineName); struct sockaddr_in sockStruct; sockStruct.sin_family = AF_INET; sockStruct.sin_port = port; sockStruct.sin_addr.s_addr = inet_addr(machineName); int desc = socket(PF_INET, sockDeclVal, 0); //0->ip if (desc == -1) { cout << "Error setting protocol\n"; return 1; } if ( connect(desc, (const sockaddr*)&sockStruct, sizeof(sockStruct)) == -1) { cout << "Failed to connect, " << strerror(errno) << "\n"; return 1; } //we have connected char response[1]; char* sentMsg = new char[numBytes]; for (int j=0; j< numTests; j++) { int got = recv(desc, (void*)sentMsg, numBytes, MSG_WAITALL ); if (numBytes != got) { cout << "Only received " << got << " chars\n"; return 1; } } if (send(desc, (const void*)response, sizeof(response), MSG_WAITALL ) != 1) { cout << "Did not send all chars\n"; return 1; } close(desc); return 0; };