Ciao a tutti! Sono nuovo!![]()
Studio Ingegneria Informatica e oggi abbiamo iniziato con la programmazione di socket.
La Professoressa ci ha mostrato del codice su Mac OS che funzionava perfettamente (ve lo allego di seguito) e ci ha detto di provare qualcosa di simile a casa. Il problema è che questo stesso codice su Windows non funziona poichè non vengono riconosciute alcune librerie che a quanto pare su Windows non esistono proprio.
Leggendo un po qua e là ho visto che su windows si usano le winsock ma non ho idea di come farlo! Andando al sodo...come faccio a far girare questo stesso codice su Windows????
Grazie in anticipo!
codice:#include <stdio.h> #include <stdlib.h> #include <strings.h> #include <unistd.h> #include <netinet/in.h> #include <time.h> #include <sys/types.h> #include <sys/socket.h> #define MAXLINE 4096 void error(char *msg) { perror(msg); exit(1); } int main(int argc, char *argv[]) { int sockfd; int portno, clilen; int bytesread, counter; struct sockaddr_in serv_addr, cli_addr; char buffer[MAXLINE]; if (argc < 2) { fprintf(stderr,"ERROR, no port provided\n"); exit(1); } sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { error("ERROR opening socket"); } bzero((char *) &serv_addr, sizeof(serv_addr)); portno = atoi(argv[1]); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(portno); if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) { error("ERROR on binding"); } clilen = sizeof(cli_addr); counter = 0; for (;;) { printf("ciao: %d\n", counter); bzero(buffer, MAXLINE); bytesread = recvfrom(sockfd, buffer, MAXLINE, 0, (struct sockaddr *)&cli_addr, (socklen_t *)&clilen); printf("check\n"); if(!strcmp(buffer, "T\n")) { counter++; time_t t = time(NULL); char* timestr = ctime(&t); sendto(sockfd, timestr, strlen(timestr)+1, 0, (struct sockaddr *)&cli_addr, clilen); } else if(!strcmp(buffer, "R\n")) { counter = 0; } else if(!strcmp(buffer, "N\n")) { char cnt[5]; sprintf(cnt, "%d", counter); sendto(sockfd, cnt, strlen(cnt)+1, 0, (struct sockaddr *)&cli_addr, clilen); } else { printf("Premi un tasto..."); char c; scanf("%c", &c); sendto(sockfd, "ricevuto", 10, 0, (struct sockaddr *)&cli_addr, clilen); } } }



Rispondi quotando
