Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <arpa/inet.h>
- #include <netinet/in.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <unistd.h>
- #include <string.h>
- #define NPACK 10
- #define PORT 6666
- #define BUFFER_SIZE 1024
- void on_error(char *s) { fprintf(stderr,"%s\n",s); fflush(stderr); exit(1); }
- int main(int argc, char *argv[])
- {
- struct sockaddr_in server, client;
- int s, i, slen=sizeof(client), port=PORT;
- char buf[BUFFER_SIZE];
- /** Controllo linea di comando **/
- if (argc >2 ) {
- on_error("Uso: ./udp_server [porta]\n");
- exit(1);
- }
- if (argc == 2) {port = atoi(argv[1]);}
- /** Creazione socket **/
- if ((s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1)
- on_error("Non riesco a creare il socket");
- /** Impostazioni del socket del server */
- memset((char *) &server, 0, sizeof(server)); /** Azzeramento **/
- server.sin_family = AF_INET; /** Famiglia internet **/
- server.sin_port = htons(port); /** Conversione numero **/
- server.sin_addr.s_addr = htonl(INADDR_ANY); /** Accetta da qualsiasi IP **/
- /** Bind **/
- if (bind(s, (struct sockaddr *)&server, sizeof(server))==-1)
- on_error("Non riesco a fare il bind");
- for (i=0; i<NPACK; i++) {
- memset(buf, 0, BUFFER_SIZE);
- /** Ricezione pacchetto **/
- if (recvfrom(s, buf, BUFFER_SIZE, 0, (struct sockaddr *)&client, &slen)==-1)
- on_error("Errore in ricezione");
- printf("Pacchetto ricevuto da %s:%d\nDato: %s\n\n",
- inet_ntoa(client.sin_addr), ntohs(client.sin_port), buf);
- }
- close(s);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement