Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

sendto(), Networking

dmiller__2dmiller__2 Posts: 1Member
I will send data "02FF0000000000002059010010" to 192.168.3.222 port 5001.

When I look at the traffic with WIRESHARK I got "303246463030303030303030303030303230353930313030..." (26 bytes)!

Result from sendto() is 26, so the problem must be somewhere in my code!

It's written in C on a Ubuntu server (2.6.28-11-server)

Any ideas?

Thanks!



[CODE]
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define SERVERPORT "5001" // the port users will be connecting to

int main(int argc, char *argv[])
{
int sockfd;
struct addrinfo hints, *servinfo, *p;
int rv;
int numbytes;



argv[1] = "192.168.3.222";
argv[2] = "02FF0000000000002059010010";


// if (argc != 3)
// {
// fprintf(stderr,"usage: talker hostname message
");
// exit(1);
// }

memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_DGRAM;




if ((rv = getaddrinfo(argv[1], SERVERPORT, &hints, &servinfo)) != 0)
{
fprintf(stderr, "getaddrinfo: %s
", gai_strerror(rv));
return 1;
}

// loop through all the results and make a socket
for(p = servinfo; p != NULL; p = p->ai_next)
{
if ((sockfd = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) == -1)
{
perror("talker: socket");
continue;
}
break;
}

if (p == NULL)
{
fprintf(stderr, "talker: failed to bind socket
");
return 2;
}

if ((numbytes = sendto(sockfd, argv[2], strlen(argv[2]), 0, p->ai_addr, p->ai_addrlen)) == -1)
{
perror("talker: sendto");
exit(1);
}

freeaddrinfo(servinfo);
printf("talker: sent %d bytes to %s
", numbytes, argv[1]);
close(sockfd);
return 0;
}
[/CODE]

Comments

  • anthrax11anthrax11 Posts: 511Member
    The string "02FF0000000000002059010010" is 26 bytes, so everything is working as it should.

    If you want to send the binary data that the string represents, then you will have to convert the string into a byte(char) array first.
Sign In or Register to comment.