From 0aed8d3d16f7ca99001fad39b341acd3aee9fd27 Mon Sep 17 00:00:00 2001 From: jbjohnso Date: Wed, 30 Nov 2011 20:37:45 +0000 Subject: [PATCH] Rework upflag.cpp to have a less Visual Studio oriented snippet for more straightforward compile. Also, IPv6 support git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@11089 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- xCAT/postscripts/upflag/upflag.cpp | 131 +++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100755 xCAT/postscripts/upflag/upflag.cpp diff --git a/xCAT/postscripts/upflag/upflag.cpp b/xCAT/postscripts/upflag/upflag.cpp new file mode 100755 index 000000000..001fedba9 --- /dev/null +++ b/xCAT/postscripts/upflag/upflag.cpp @@ -0,0 +1,131 @@ + +#include "winsock2.h" +#include "ws2tcpip.h" +#include "windows.h" +#include "stdio.h" +#pragma comment (lib,"ws2_32.lib") + +void Usage() +{ +printf("upflag Ver 0.0.0.1\n"); +printf("\nusage: upflag [hostname][port_number][test_to_send]\n"); + +printf("\nExamples:"); +printf("\nupflag some_hostname 5000 ready"); +printf("\nupflag some_hostname 5000 \"I am ready\""); +printf("\nupflag 192.168.0.1 5000 ready\n\n"); + +} + +int SendMsg(SOCKET conn_socket, TCHAR *szMsg) +{ +TCHAR szIncomingMsg[255]; + +szMsg[lstrlen(szMsg)]= '\n\0'; + +recv(conn_socket, szIncomingMsg, sizeof(szIncomingMsg),0); + +printf("\nrecv %s Len: %d ", szIncomingMsg, (int)strlen(szIncomingMsg)); + +if(strstr(strlwr(szIncomingMsg), "ready") == NULL) + return 1; + +send(conn_socket, (const char *)szMsg, (int)strlen((const char *)szMsg), 0); + +lstrcpy(szIncomingMsg, ""); +recv(conn_socket, szIncomingMsg, sizeof(szIncomingMsg),0); + +printf("\nsend %s Len: %d ", szMsg, strlen((const char *)szMsg)); +printf("\nrecv %s Len: %d ", szIncomingMsg, (int)strlen(szIncomingMsg)); + +if(strstr(strlwr(szIncomingMsg), "done") != NULL) + return 0; +else + return 1; + +} + +int main(int argc, TCHAR* argv[]) +{ +SOCKET conn_socket; +struct hostent *hp; +struct addrinfo *targets; +struct addrinfo *target; +unsigned int addr; +struct sockaddr_in sa; +WSADATA wsaData; +int iPort; +DWORD errval; + +if((argc < 2) || (lstrcmpi(argv[1] ,"/?") == 0) || (lstrcmpi(argv[1] ,"-?") == 0)) +{ + Usage(); + return 1; +} + +if(argc == 1) +{ + Usage(); +} + + +if (WSAStartup(0x0101,&wsaData) == SOCKET_ERROR) +{ + WSACleanup(); + printf("WSAStartup failed with error %d\n",WSAGetLastError()); + return 1; +} + +errval=getaddrinfo(argv[1],argv[2],NULL,&targets); +/* +if((hp = gethostbyname((LPCSTR)argv[1])) == NULL) +{ + addr = inet_addr((LPCSTR)argv[1]); + hp = gethostbyaddr((LPCSTR)&addr,4,AF_INET); +} +*/ + +iPort = atoi((LPCSTR)argv[2]); + +conn_socket = socket(targets->ai_family, SOCK_STREAM, 0); +if (conn_socket == INVALID_SOCKET) { + printf("My life is a lie!\n"); +} + +printf("\nConnecting... \n"); + +int z = connect(conn_socket, targets->ai_addr, targets->ai_addrlen); +printf("ok\n"); + +if(z == SOCKET_ERROR) +{ +// z = connect(conn_socket, (struct sockaddr*)&sa, sizeof(sa)); + + if(z == SOCKET_ERROR) + { + printf("\nUnable to connect to host."); + printf("\nWSAStartup failed with error %d\n",WSAGetLastError()); + return 1; + } + else + { + printf("connection was successfull.\n"); + } +} +else +{ + printf("connection was successful.\n"); +} + +if(SendMsg(conn_socket, argv[3]) == 0) +{ + WSACleanup(); + return 0; +} +else +{ + WSACleanup(); + return 1; +} + +}