2017-09-29 3 views
0

Il s'agit du programme client où la boucle prévue doit être définie. Mais je ne suis pas capable de comprendre où l'inclure car je suis nouveau à la programmation socket. S'il vous plaît, quelqu'un m'aide à le coder. J'ai besoin de ce code pour inclure une boucle qui m'aidera à transférer en continu des données aléatoires sur le serveur toutes les n secondes.Je veux inclure une boucle for dans le code ci-dessous qui peut envoyer en continu l'ID de données, l'horodatage et le message à intervalle de toutes les n secondes

#include <stdio.h> 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <netdb.h> 
#include <stdlib.h> 
#include <string.h> 
#include <unistd.h> 
void error(char *msg) 
{ 
    perror(msg); 
    exit(0); 
} 

int main(int argc, char *argv[]) 
{ 
    int sockfd, portno, n; 

    struct sockaddr_in serv_addr; 
    struct hostent *server; 

    char buffer[256]; 
    if (argc < 3) { 
     fprintf(stderr,"usage %s hostname port\n", argv[0]); 
     exit(0); 
    } 
    portno = atoi(argv[2]); 
    sockfd = socket(AF_INET, SOCK_STREAM, 0); 
    if (sockfd < 0) 
     error("ERROR opening socket"); 
    server = gethostbyname(argv[1]); 
    if (server == NULL) { 
     fprintf(stderr,"ERROR, no such host\n"); 
     exit(0); 
    } 
    bzero((char *) &serv_addr, sizeof(serv_addr)); 
    serv_addr.sin_family = AF_INET; 
    bcopy((char *)server->h_addr, 
     (char *)&serv_addr.sin_addr.s_addr, 
     server->h_length); 
    serv_addr.sin_port = htons(portno); 
    if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0) 
     error("ERROR connecting"); 
    printf("Please enter the message: "); 
    bzero(buffer,256); 
    fgets(buffer,255,stdin); 
    n = write(sockfd,buffer,strlen(buffer)); 
    if (n < 0) 
     error("ERROR writing to socket"); 
    bzero(buffer,256); 
    n = read(sockfd,buffer,255); 
    if (n < 0) 
     error("ERROR reading from socket"); 
    printf("%s\n",buffer); 
    return 0; 
} 
+0

Alors quoi? Fais le. Vous n'avez pas réussi à poser une question. –

+0

Je n'ai pas pu le faire, c'est y j'ai demandé aux gens de m'aider. Chillax. –

+3

Malheureusement, ce n'est pas un service d'écriture de code. –

Répondre

0

Ajoutez #include<time.h> au début. Utilisez la fonction ci-dessous pour ajouter un délai.

void delay(unsigned short secs) 
{ 
    unsigned milli_seconds = 1000 * secs; 

    clock_t start_time = clock(); //declaration in time.h 

    while (clock() < start_time + milli_seconds) 
     ; 
} 

intérieur main() appel du retard (intervalle) dans la boucle infinie pour envoyer l'horodatage, id et

int main(int argc, char *argv[]) 
{ 
    unsigned data_id=0; 
    char data[1024]; 
    ... 
    while(1) 
    { 
      delay(5); 
      send(client_sock,data,strlen(data),0); 
    } 
    .. 
    return EXIT_SUCCESS; 
} 

J'espère que vous l'obtenez.

Remarque: N'utilisez pas bzero() à la place d'utiliser memset(). Pour plus lire this un.