Teraz zrobimy serwer nasłuchujący na wybranym porcie (przekazywanym jako parametr przy uruchomieniu naszego programu) ewentualnych próśb o zrobienie zdjęcia.
int sockfd, newsockfd, portno, clilen; struct sockaddr_in serv_addr, cli_addr;Tworzymy socket:
sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { perror("ERROR opening socket"); exit(1); } bzero((char *) &serv_addr, sizeof(serv_addr));W zmiennej portno zapisujemy numer portu na którym nasz serwer ma nasłuchiwać:
portno = atoi(argv[1]); //arbitralny zakres 5090 - 5099 serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(portno);Adresujemy nasz socket:
if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) { perror("ERROR on binding"); exit(1); }I uruchamiamy nasz serwer, na wskazanym przez nas porcie bedzie sluchał próśb klientów:
Liczba 5 to długość kolejki klientów oczekujących na połączenie.
listen(sockfd,5); clilen = sizeof(cli_addr); while (TRUE) {I czekamy na klienta. Jak się pojawi, accept utworzy nowy socket (newsockfd), który będzie używany do komunikacji z tym klientem:
restart: newsockfd = accept(sockfd, (struct sockaddr *)&cli_addr, &clilen); if (newsockfd < 0) { if (errno == EINTR) goto restart; perror("ERROR on accept"); exit(1); }