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 */ }
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(); }
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; }
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(); }
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); }