Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Esercizio inventato da Marco Andronaco, LATO SERVER
- * Crea un client e un server INET STREAM_SOCKET.
- * Quando il client si connette al server, il server chiede due numeri e ne restituisce la somma al client, chiude quindi la connessione.
- */
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/types.h>
- int main(void){
- int res, new_sd, run = 1;
- //socket
- int sd = socket(AF_INET, SOCK_STREAM, 0);
- if(sd == -1){
- puts("Errore nella socket().");
- exit(EXIT_FAILURE);
- }
- //bind
- struct sockaddr_in server_address;
- server_address.sin_family = AF_INET;
- server_address.sin_port = 0;
- server_address.sin_addr.s_addr = INADDR_ANY;
- res = bind(sd, (struct sockaddr_in *)&server_address, sizeof(struct sockaddr_in));
- if(res == -1){
- puts("Errore nella bind().");
- exit(EXIT_FAILURE);
- }
- //listen
- res = listen(sd, 5);
- if(res == -1){
- puts("Errore nella listen().");
- exit(EXIT_FAILURE);
- }
- //ottengo il numero di porta
- int server_len = sizeof(server_address);
- res = getsockname(sd, (struct sockaddr_in *)&server_address, &server_len);
- if(res == -1){
- puts("Errore nella getsockname().");
- exit(EXIT_FAILURE);
- }
- printf("Coda creata. Server in ascolto sulla porta %d.\n", server_address.sin_port);
- //accept
- do {
- new_sd = accept(sd, (struct sockaddr_in *)&server_address, &server_len);
- if (accept == -1) {
- puts("Errore nella accept().");
- exit(EXIT_FAILURE);
- }
- puts("Connessione stabilita!");
- } while (run);
- close(sd);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement