Beispiel #1
0
/* TNgo, 5/22/97, added another variable to this function
   so that it can be called by IPC_connectModule */
IPC_RETURN_TYPE _IPC_connect (const char *taskName,
			      const char *serverName,
			      BOOLEAN willListen)
{
  const char *serverHost;
  char *colon = NULL;
  int i, serverPort;
  struct timeval wait;

  /* Added by Bob Goode/Tam Ngo, 5/21/97, for WINSOCK option. */
#ifdef OS2
  sock_init();
#elif defined(_WINSOCK_)
  startWinsock();
#endif /* Winsock DLL loading */

  if (ipcVerbosity > IPC_Silent) {
    printf("NMP IPC Version %d.%d.%d (%s)\n", 
	   IPC_VERSION_MAJOR, IPC_VERSION_MINOR, IPC_VERSION_MICRO,
	   IPC_VERSION_DATE);
  }

  /* Modified by TNgo, 5/22/97 */
  serverHost = ((serverName != NULL && strlen(serverName) > 0) 
		? serverName : x_ipcServerMachine());

  for (i=0; i<MAX_RECONNECT_TRIES; i++) {
    if (i > 0 && ipcVerbosity > IPC_Silent)
      printf("  Trying again %s to connect with the central server on %s\n",
		      taskName, serverHost);
    IPC_initialize();
    x_ipcWillListen(willListen);
    x_ipcConnectModule(taskName, serverHost);
    if (X_IPC_CONNECTED()) {
      x_ipcWaitUntilReady();
      if (ipcVerbosity > IPC_Silent) {
	colon = (serverHost ? (char *)index((char *)serverHost, ':') : NULL);
	serverPort = (colon == NULL ? SERVER_PORT : atoi(colon+1));
	X_IPC_MOD_WARNING1("... IPC Connected on port %d\n", serverPort);
      }
      return IPC_OK;
    } else {
      /* Need to do this, rather than sleep, because of SIGALRM's */
      wait.tv_sec = RECONNECT_WAIT; wait.tv_usec = 0;
      select(0, 0, 0, 0, &wait);
    }
  }
  /* At this point, we've been unable to connect */
  RETURN_ERROR(IPC_Not_Connected);
}
bool UDP_Socket::InitSocket()
{
	if (Initialized)
		return true; // we're already initialized!

	sockaddr_in adr_inet;

	memset(&adr_inet, 0, sizeof(adr_inet));
	adr_inet.sin_family = AF_INET;
	adr_inet.sin_port = htons((unsigned short) port);
	adr_inet.sin_addr.s_addr = INADDR_ANY;

#if defined(WIN32)

	// Windows Version
	int rc = startWinsock();
	if(rc != 0)
		return false;

	this->socket = ::socket(AF_INET,SOCK_DGRAM,0);
	if(this->socket == INVALID_SOCKET)
		return false;

	if (bind(this->socket, (sockaddr *)&adr_inet, sizeof(adr_inet)) == SOCKET_ERROR)
		return false;
#else
	// Unix Version

	this->socket = ::socket(AF_INET, SOCK_DGRAM, 0);
	if (this->socket == -1)
	{
		Out << "Couldn't Get Socket (" << strerror(errno) << ")" << endl;
		return false;
	}


	if (bind(this->socket, (sockaddr *)&adr_inet, sizeof(adr_inet)) == -1)
	{
		Out << "Couldn't Bind Socket" << endl;
		return false;
	}

#endif

	Initialized = true;
	return true;
}
Beispiel #3
0
void iRODSNtAgentInit(int ac, char **av)
{
	iRODSNtServerCheckExecMode(ac, av);
	iRODSNtSetServerHomeDir(av[0]);
	if(nIrodsNtMode != IRODS_NT_CONSOLE_MODE)
	{
		char *log_fname = getenv("irodsLogFile");
		if(log_fname == NULL)
			return;
		iRODSNtServerLogFileName = strdup(log_fname);
	}
	if (startWinsock() != 0)
	{
		fprintf(stderr,"failed to call startWinsock().\n");
		exit(0);
	}
}
Beispiel #4
0
int main(int argc, char ** argv)
{
    long rc;
    SOCKET s;
    SOCKADDR_IN addr;
    rc = startWinsock();
    if(rc!=0)
    {
        std::cout << "Fehler: startWinsock, fehler code: %d\n",rc;
        return 1;
    }
    else
    {
        std::cout << "Winsock gestartet" << std::endl;
    }
    s = socket(AF_INET,SOCK_STREAM,0);
    if(s== INVALID_SOCKET)
    {
        std::cout << "Fehlernummer: " << WSAGetLastError() << std::endl;
    }
    else
    {
        std::cout << "Socket gestartet" << std::endl;
    }
    memset(&addr,0,sizeof(SOCKADDR));
    addr.sin_family = AF_INET;
    addr.sin_port = htons(5050);
    addr.sin_addr.s_addr = inet_addr("25.193.46.75");
    rc = connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
    if(rc == SOCKET_ERROR)
    {
        std::cout << "Error, Verbindung gescheitert!: " << WSAGetLastError() << std::endl;
    }
    else
    {
        std::cout << "Verbunden mit 10.0.0.6" << std::endl;
    }
    system("PAUSE");
    return 0;
    
}
Beispiel #5
0
rcComm_t *
rcConnect( const char *rodsHost, int rodsPort, const char *userName, const char *rodsZone,
           int reconnFlag, rErrMsg_t *errMsg ) {
    rcComm_t *conn;

#ifdef windows_platform
    if ( 0 != startWinsock() ) {
        conn = NULL;
        /*error -34*/
        return conn;
    }
#endif

#ifndef windows_platform
    if ( reconnFlag != RECONN_TIMEOUT && getenv( RECONNECT_ENV ) != NULL ) {
        reconnFlag = RECONN_TIMEOUT;
    }
#endif

    conn = _rcConnect( rodsHost, rodsPort, userName, rodsZone, NULL, NULL,
                       errMsg, 0, reconnFlag );

    return conn;
}
void NetworkManager::init(const HWND hWnd)
{
    startWinsock();
    joinMulticastGroup(hWnd);
    setupPeerListener(hWnd);
}
// The fun starts here :-)
int main()

{
	// for for :-)
	int i;
	
	// Socket handle
  long rc;

	// Overflow buffer
	char sbuf[SMBUFSIZ];  // send buffer
	char rbuf[RMBUFSIZ]; // receive buffer

	// Socket and socket address
  SOCKET acceptSocket;
	SOCKET connectedSocket;
  SOCKADDR_IN addr;

	// Start winsocks
  rc=startWinsock();

	// Error occured ?
  if(rc!=0)
  {
    printf("Error: startWinsock, error code: %d\n",rc);
    return 1;
  }

  else
  {
    printf("Winsock started!\n");
  }
  
  // creat socket
  acceptSocket=socket(AF_INET,SOCK_STREAM,0);

  // Accept connections
  if(acceptSocket==INVALID_SOCKET)
  {
    printf("Error: cannot create socket, error code: %d\n",WSAGetLastError());
    return 1;
  }

  else
  {
    printf("Socket created!\n");
  }

	// ip or dns-name
	memset(&addr,0,sizeof(SOCKADDR_IN));
	
	// TCP/IP socket
	addr.sin_family=AF_INET;
	
	// Port number 12345
	addr.sin_port=htons(PORTNUM);

	// All clients allowed
	addr.sin_addr.s_addr=ADDR_ANY;

	// bind socket to port and check for errors
	rc=bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));

	if(rc==SOCKET_ERROR)
	{
  	printf("Error: bind, error code: %d\n",WSAGetLastError());
 	 	return 1;
	}

	else
	{
  	printf("Socket listens port 12345\n");
	}
	
	// Maximum connections is 10. Listen port 12345
	// and check for errors
	rc=listen(acceptSocket,10);

	if(rc==SOCKET_ERROR)
	{
  	printf("Error: listen, errorcode: %d\n",WSAGetLastError());
  	return 1;
	}

	else
	{
  	printf("acceptSocket is in listen mode....\n"); 
	}
	
	// Accept and wait for connections
	connectedSocket=accept(acceptSocket,NULL,NULL);

	if(connectedSocket==INVALID_SOCKET)
	{
  	printf("Error: accept, error code: %d\n",WSAGetLastError());
  	return 1;
	}
	
	else
	{
  	printf("Accept connection !!!\n");
	}

	// Set the whole buffer to VCHAR
	memset(sbuf, VCHAR, SMBUFSIZ);

  // Error code greater than 500 is needed for overflow
	sbuf[0] = '5';
	sbuf[1] = '9';
	sbuf[2] = '0';
	sbuf[3] = ' ';
	
	// Add newline and terminate
	sbuf[SMBUFSIZ-2] = '\n';
	sbuf[SMBUFSIZ-1] = 0x00;
	
	// Send response and receive request
	rc=send(connectedSocket,sbuf,strlen(sbuf),0);
	rc=recv(connectedSocket,sbuf,256,0);
	
	return 0;
}
Beispiel #8
0
int main(int argc, char **argv)
#endif
{
  int expectedMods = 0;
  
#ifdef macintosh
  doSiouxStuff();
  argc = ccommand(&argv);
#endif
 
  /* Added by Bob Goode/Tam Ngo, 5/21/97, for WINSOCK option. */
#ifdef OS2
  sock_init();
#elif defined(_WINSOCK_)
  startWinsock();
#endif /* Winsock DLL loading */

  x_ipcModuleInitialize();
#ifdef VXWORKS
  /* Do this only after the socket is set up (in case there is an
     old central lying around that needs killed */
  centralTID = taskIdSelf();
#endif
  globalSInit();
  
#if !defined(THINK_C) && !defined(macintosh) && !defined(__TURBOC__) && !defined(OS2) && !defined(_WIN95_MSC_) && !defined(WINNT) && !defined(WIN32)
  (void)signal(SIGINT, abortCentral);
  (void)signal(SIGBUS, abortCentral);
  (void)signal(SIGSEGV, abortCentral);
  (void)signal(SIGPIPE, pipeClosedHnd);
  (void)signal(SIGTERM, abortCentral);
#endif /* !THINK_C && !macintosh */
  
#ifndef VXWORKS
  if ((argc > 1) && (STREQ(argv[1], "-v")))
    displayVersion();
  else if ((argc > 1) && (STREQ(argv[1], "-h"))) {
    displayOptions(argv[0]);
#ifdef macintosh
  SIOUXSettings.autocloseonquit = FALSE;
#endif
  } else {
    parseExpectedMods(argc, argv, &expectedMods);
    parseCommandLineOptions(argc, argv);
#else
  if ((options!= NULL) && (strstr(options, "-v") || strstr(options, "-V"))) {
    displayVersion();
  } else if ((options!= NULL) && 
	     (strstr(options, "-h") || strstr(options, "-H"))) {
    displayOptions("central");
  } else {
    parseOpsFromStr(options, &expectedMods, FALSE);
#endif
      
    if (expectedMods < 1)
      expectedMods = 1;
      
    if (!serverInitialize(expectedMods)) {
      X_IPC_ERROR("ERROR: Unable to start server, Is one already running?\n");
    }
      
#ifndef VXWORKS
    /* Register a method for freeing memory in an emergency. */
    x_ipcRegisterFreeMemHnd(centralFreeMemory,3);
      
    if (GET_S_GLOBAL(listenToStdin))
      printPrompt();
#endif

#ifndef DEFAULT_OPTIONS
    fprintf(stderr, "central running...\n");
#endif

    listenLoop();
  }
#ifdef _WINSOCK_
  WSACleanup();
  printf("Socket cleaned up.");
#endif /* Unload Winsock DLL */
#ifndef VXWORKS
  return 1;
#endif
}
Beispiel #9
0
int openSocket() {

	char debug_message[256];

	#if IBM
	if ( startWinsock() == 0 ) {
	    XPLMDebugString("XData: start winsock failed\n");
		return 0;
	}
	#endif

	// create socket
	//sockfd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
	sockfd = socket(PF_INET, SOCK_DGRAM, 0);

    #if IBM
	if ( sockfd == INVALID_SOCKET ) {
    #else
	if ( sockfd < 0 ) {
    #endif
		sprintf(debug_message, "XData: failed - could not open socket! errno: %d\n", GET_ERRNO);
		XPLMDebugString(debug_message);
		return 0;
	} else {
		XPLMDebugString("XData: socket created\n");
	}

    return 1;

}


void setAddresses() {

	char addr_cleartext[200]; // 1.0 Beta 8 : [100] was too small...
	int i;

	XPLMDebugString("XData: setting addresses\n");

    // receiver address
	recv_sockaddr.sin_family = AF_INET;
	recv_sockaddr.sin_port = htons(recv_port);
	recv_sockaddr.sin_addr.s_addr = INADDR_ANY;
	memset(&(recv_sockaddr.sin_zero), '\0', 8);

	sprintf(addr_cleartext, "XData: recv : Port=%d\n", recv_port);
	XPLMDebugString(addr_cleartext);
	
	char tmp[200];
	sprintf(tmp, "Setting %d destination addresses.\n", NUM_DEST);
	XPLMDebugString(tmp);

    // destination address
	for ( i=0; i<NUM_DEST; i++ ) {
		if (dest_enable[i]) {
			sprintf(tmp, "Configuring destination %d.\n", i);
			XPLMDebugString(tmp);
			
			dest_sockaddr[i].sin_family = AF_INET;
			dest_sockaddr[i].sin_port = htons(dest_port[i]);
			dest_sockaddr[i].sin_addr.s_addr = inet_addr(dest_ip[i]);
			memset(&(dest_sockaddr[i].sin_zero), '\0', 8);

			sprintf(addr_cleartext, "XData: dest[%d] : IP=%s  Port=%d\n",
					i, dest_ip[i], dest_port[i]);
			XPLMDebugString(addr_cleartext);
		}
	}
	
	XPLMDebugString("Finished binding network addresses\n");
}