static void server_opts(int argc, char **argv) { int long_index = 0; int opt; char *errptr; optind = 0; while ((opt = getopt_long(argc, argv, "?hp:t:f:", server_options, &long_index)) != -1) { switch(opt) { case 'h': case '?': server_usage(); exit(0); case 'p': errno = 0; port = strtoul(optarg, &errptr, 10); if (*errptr != '\0' || errno) { server_usage(); exit(-1); } break; case 't': errno = 0; workers = strtoul(optarg, &errptr, 10); if (*errptr != '\0' || errno || !workers || workers > 1000) { server_usage(); exit(-1); } break; case 'f': path = optarg; break; default: server_usage(); exit(-1); } } }
int server_setup(krb5_context *context, int argc, char **argv) { int port = common_setup(context, &argc, argv, server_usage); krb5_error_code ret; if(argv[argc] != NULL) server_usage(1, args, num_args); if (keytab_str != NULL) ret = krb5_kt_resolve (*context, keytab_str, &keytab); else ret = krb5_kt_default (*context, &keytab); if (ret) krb5_err (*context, 1, ret, "krb5_kt_resolve/default"); return port; }
/** * Parst die übergebenen Argumente. */ void server_parse_params(int argc, char *argv[]) { int param = 0; while ((param = getopt(argc, argv, "h?p:d:")) != -1) { switch (param) { case 'p': port = atoi(optarg); break; case 'd': debuglevel = atoi(optarg); break; case 'h': case '?': default: server_usage(); exit(1); } } }
int main (int argc, char *argv[] ) { lscp_server_t *pServer; char szLine[200]; int cchLine; lscp_connect_t *p; #if defined(WIN32) if (WSAStartup(MAKEWORD(1, 1), &_wsaData) != 0) { fprintf(stderr, "lscp_server: WSAStartup failed.\n"); return -1; } #endif srand(time(NULL)); pServer = lscp_server_create(SERVER_PORT, server_callback, NULL); if (pServer == NULL) return -1; server_usage(); server_prompt(); while (fgets(szLine, sizeof(szLine), stdin)) { cchLine = strlen(szLine); while (cchLine > 0 && (szLine[cchLine - 1] == '\n' || szLine[cchLine - 1] == '\r')) cchLine--; szLine[cchLine] = '\0'; if (strcmp(szLine, "exit") == 0 || strcmp(szLine, "quit") == 0) break; else if (strcmp(szLine, "list") == 0) { for (p = pServer->connects.first; p; p = p->next) { printf("client: sock=%d addr=%s tcp.port=%d udp.port=%d ping=%d sessid=%s.\n", p->client.sock, inet_ntoa(p->client.addr.sin_addr), ntohs(p->client.addr.sin_port), p->port, p->ping, p->sessid ); } } else if (cchLine > 0 && strcmp(szLine, "help") != 0) lscp_server_broadcast(pServer, szLine, strlen(szLine)); else server_usage(); server_prompt(); } lscp_server_destroy(pServer); #if defined(WIN32) WSACleanup(); #endif return 0; }