int main(int argc, char const *argv[]) { int sockfd; struct addrinfo hints, *servinfo, *var; memset(&hints, 0, sizeof hints); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_PASSIVE; // use my IP int yes = 1; int err; if(argc != 2) { fprintf(stderr, "Usage: ./server.out [Port]\n"); } if ((err = getaddrinfo(NULL, argv[1], &hints, &servinfo)) != 0) //servinfo is a linked-list of info. about IPs of the host { fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(err)); return 1; } for(var = servinfo; var != NULL; var = var->ai_next) { if ((sockfd = socket(var->ai_family, var->ai_socktype, var->ai_protocol)) == -1) { perror("server: unable to open socket\n"); continue; } if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1) { perror("setsockopt"); exit(1); } if(bind(sockfd, var->ai_addr, var->ai_addrlen) == -1) { perror("server: unable to bind to socket"); continue; } break; } freeaddrinfo(servinfo); if(var == NULL) { fprintf(stderr, "server: failed to bind\n"); exit(1); } if(listen(sockfd, BACKLOG) == -1) { perror("server: listen error"); exit(1); } printf("Listening for incoming connections..\n"); // Multi-client I/O Multiplexing multiplexer(sockfd); close(sockfd); return 0; }
void NeoModemService::suspend() { qLog(Modem) << " Gta04ModemService::suspend()"; //chat("AT_OSQI=0"); // unsolicited reporting of antenna signal strength, e.g. "_OSIGQ: 3,0" primaryAtChat()->suspend(); QSerialIODevice *port = multiplexer()->channel("primary"); port->close(); suspendDone(); }
void NeoModemService::wake() { qLog(Modem) << " Gta04ModemService::wake()"; QSerialIODevice *port = multiplexer()->channel("primary"); port->open(QIODevice::ReadWrite); primaryAtChat()->resume(); //primaryAtChat()->resume(); //chat("AT_OSQI=1"); // unsolicited reporting of antenna signal strength, e.g. "_OSIGQ: 3,0" wakeDone(); }