示例#1
0
int main(int argc, char *argv[])
{
	int					dConnection;
	char				aServerIp[] = "127.000.000.001";
	int					serverPort = chatPort;
	struct sockaddr_in	uServer;
	

	if (argc == 2){
		memcpy(aServerIp, argv[1], strlen(argv[1]) + 1);
	}else if (argc == 3){
		memcpy(aServerIp, argv[1], strlen(argv[1]) + 1);
		serverPort = atoi(argv[2]);
	}

	dConnection = socket(AF_INET, SOCK_STREAM, 0);

	uServer.sin_family = AF_INET;
	uServer.sin_addr.s_addr = inet_addr(aServerIp);
	uServer.sin_port = htons(serverPort);

	printf("connecting to server:%s:%d.\n", aServerIp, serverPort);
	if (connect(dConnection, (struct sockaddr *)&uServer, sizeof(uServer)) == 0){
		printf("connected.\n");
	}else {
		printf("ERR: connect.\n");
	}

	clientThread(stdin, dConnection);

	exit(0);
	return 0;
}
int main(int argc, char *argv[])
{
    int sock;                        /* Socket */
    struct sockaddr_in echoServAddr; /* Local address */
    struct sockaddr_in echoClntAddr; /* Client address */
    unsigned int cliAddrLen;         /* Length of incoming message */
    char echoBuffer[ECHOMAX];                /* Buffer for echo string */
    unsigned short echoServPort;     /* Server port */
    int recvMsgSize;                 /* Size of received message */

    if (argc != 2)         /* Test for correct number of parameters */
    {
        fprintf(stderr,"Usage:  %s <UDP SERVER PORT>\n", argv[0]);
        exit(1);
    }

    echoServPort = atoi(argv[1]);  /* First arg:  local port */

    /* Create socket for sending/receiving datagrams */
    if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
        exitWithError("socket() failed");

    /* Construct local address structure */
    memset(&echoServAddr, 0, sizeof(echoServAddr));   /* Zero out structure */
    echoServAddr.sin_family = AF_INET;                /* Internet address family */
    echoServAddr.sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface */
    echoServAddr.sin_port = htons(echoServPort);      /* Local port */

    /* Bind to the local address */
    if (bind(sock, (struct sockaddr *) &echoServAddr, sizeof(echoServAddr)) < 0)
        exitWithError("bind() failed");

    for (;;) /* Run forever */
    {
        /* Set the size of the in-out parameter */
        cliAddrLen = sizeof(echoClntAddr);

        /* Block until receive message from a client */
        if ((recvMsgSize = recvfrom(sock,
                                    echoBuffer,
                                    ECHOMAX,
                                    0,
                                    (struct sockaddr *) &echoClntAddr,
                                    &cliAddrLen)
                                  ) < 0)
            exitWithError("recvfrom() failed");

        printf("Handling client %s\n", inet_ntoa(echoClntAddr.sin_addr));

        // Create thread to handle client
        std::thread clientThread(handleClient, echoBuffer, sock, recvMsgSize, echoClntAddr);
        // Let the thread run independently
        clientThread.detach();

        }

    /* NOT REACHED */
}
示例#3
0
 void EsriInstance::ClientThread_Routine(std::shared_ptr<toni::TcpClient> tcpClient)
 {
   std::string threadName = "esri" + IPv4FromSocketEndpoint(tcpClient->GetEndpoint());
   SetThreadNameOfCurrentThread(threadName.c_str());
   
   EsriClientThread clientThread(*tcpClient, *m_HandlerFactory);
   clientThread.EntryPoint();
   tcpClient->Disconnect();
 }
示例#4
0
std::string generalQueryHandler(const std::string& query)
{
  std::string answer;
  Client client;
  boost::thread clientThread(boost::ref(client));
  client.getQueryBQ().push(query);
  client.getQueryBQ().push(Client::BREAK_COMMAND);
  client.getAnswerBQ().pop(answer);
  clientThread.join();
  return answer;
}
示例#5
0
	void run() const {
		// run the chat client
		boost::thread clientThread(boost::bind(&BasicChatClient::run, model_));
		// begin processing user input
		view_->presentLine("CPSC427 OOP Final Project\nFei Huang\nWelcome to OpenChat");
		view_->presentLine("");
		controller_->presentOpeningLine();
		bool processMore;
		do {
			view_->present(">>> ");
			string input;
			getline(is_, input);
			boost::trim(input);
			processMore = controller_->processUserInput(input);
		} while (processMore);
		// clean up: stop the client and wait the thread to join
		model_->stop();
		clientThread.join();
	}
示例#6
0
文件: client.c 项目: corizzi/r-saux
int
main (int argc, char *argv[])
{

    srand ((unsigned int) time (NULL));
    commInit (&annuaire);
    commInit (&moi[0]);
    commInit (&moi[1]);

    annuaire.etat = STATE_ANNUAIRE;
    strncpy (annuaire.nom, "NULL", sizeof "NULL");

#if DEBUG == 1 || DEBUG == 2
    //strncpy (annuaire.padr, "::1", sizeof "::1");
    strncpy (annuaire.padr, "127.0.0.1", sizeof "127.0.0.1");
    annuaire.port = 9000;
    printf (" --------   Mode DEBUG    -------- \n");
    if (argc == 2)
    {
	if (strcmp (argv[1], "--annuaire") == 0)
	{
	    // Lancement de l'annuaire
	    printf ("Annuaire\n");
	    annuaireThread (NULL);
	}
	else if (strcmp (argv[1], "--canal") == 0)
	{
	    printf ("Canal\n");
	    moi[0].etat = STATE_INIT;
	    strncpy (moi[0].padr, "::1", sizeof "::1");
	    strncpy (moi[0].nom, "Channel1", sizeof "Channel1");
	    canalThread (&moi);
	}
	else if (strcmp (argv[1], "--simple") == 0)
	{
	    printf ("Client Simple \n");
	    moi[0].etat = STATE_CL_SIM_INIT;
	    strncpy (moi[0].padr, "::1", sizeof "::1");
	    strncpy (moi[0].nom, "Alice", sizeof "Alice");
	    clientThread (&moi);
	}

	else if (strcmp (argv[1], "--classique") == 0)
	{
	    printf ("Client Classique \n");
	    moi[0].etat = STATE_CL_SUP_INIT;
	    strncpy (moi[0].padr, "::1", sizeof ("::1"));
	    strncpy (moi[0].nom, "Bob", sizeof ("Bob"));
	    clientThread (&moi);
	}
	else if (strcmp (argv[1], "--test") == 0)
	{
	    tests ();
	}
	else
	{
	    printf ("Argument invalide\n");
	}
    }
    else
    {
	printf ("Nombre d'arguments invalide\n");
    }
#else
#endif
    exit (0);
}