c - Sending/receiving weird data -


im sending data on network via sockets this: (broadcast)

    void sendbroad(char *dstip, char *localip, char *localmac) {     int sock;                         /* socket */     struct sockaddr_in broadcastaddr; /* broadcast address */     int broadcastpermission;          /* socket opt set permission broadcast */     unsigned int datalen;     char data[100]={0};      strcat(data, localip);     strcat(data, " ");     strcat(data, localmac);     strcat(data, " ");       /* create socket sending/receiving datagrams */     if ((sock = socket(pf_inet, sock_dgram, ipproto_udp)) < 0)         perror("socket() failed");      /* set socket allow broadcast */     broadcastpermission = 1;     if (setsockopt(sock, sol_socket, so_broadcast, (void *) &broadcastpermission,            sizeof(broadcastpermission)) < 0)         perror("setsockopt() failed");      /* construct local address structure */     memset(&broadcastaddr, 0, sizeof(broadcastaddr));   /* 0 out structure */     broadcastaddr.sin_family = af_inet;                 /* internet address family */     broadcastaddr.sin_addr.s_addr = inet_addr(dstip);   /* broadcast ip address */     broadcastaddr.sin_port = htons(broadcastport);      /* broadcast port */       datalen = strlen(data);     int j;     (j=0; j<1; j++) /* 3krat dost */     {          /* broadcast localip in datagram clients */          if (sendto(sock, data, datalen, 0, (struct sockaddr *)                 &broadcastaddr, sizeof(broadcastaddr)) != datalen)              perror("sendto() sent different number of bytes expected");     }     /* not reached */ } 

but weird chars in begining when receiving, like:

x.?192.168..... 

when try send data 6 times, once data starting 192..., other 5 strings starts weird chars. idea happening here?

thanks

char data[100]; not initialized. accordingly, concatenating end of undefined garbage, not end of empty string. undefined behaviour not guaranteed '\0' appears anywhere within reserved space (to nothing of fact it's plain undefined behaviour , compiler may wishes if/when detects this).

char data[100] = {0}; should trick.


Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

visual c++ - Using relative values in array sorting ( asm ) -