sendto(), Networking - Programmers Heaven

Howdy, Stranger!

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


sendto(), Networking

dmiller__2dmiller__2 Posts: 1Member
I will send data "02FF0000000000002059010010" to 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?


#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] = "";
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");

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");

printf("talker: sent %d bytes to %s
", numbytes, argv[1]);
return 0;


  • 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.