c - Linux UDP sendto "Bad address" error in local -



c - Linux UDP sendto "Bad address" error in local -

i trying code udp 2 thread.

first init udp sockets

int fdpipe[2]; //for sockets if ((fdpipe[0] = socket(af_inet, sock_dgram, 0)) < 0) { perror("cannot create socket"); assert(null); } struct sockaddr_in readaddr; memset((char *)&readaddr, 0, sizeof(readaddr)); readaddr.sin_family = af_inet; readaddr.sin_addr.s_addr = htonl(inaddr_any); readaddr.sin_port = htons(10000); if (bind(fdpipe[0], (struct sockaddr *)&readaddr, sizeof(readaddr)) < 0) { perror("bind failed"); assert(null); } if ((fdpipe[1] = socket(af_inet, sock_dgram, 0)) < 0) { perror("cannot create socket"); assert(null); } struct sockaddr_in writeaddr; memset((char *)&writeaddr, 0, sizeof(writeaddr)); writeaddr.sin_family = af_inet; writeaddr.sin_addr.s_addr = htonl(inaddr_any); writeaddr.sin_port = htons(10101); if (bind(fdpipe[1], (struct sockaddr *)&writeaddr, sizeof(writeaddr)) < 0) { perror("bind failed"); assert(null); }

and address sendto()

struct sockaddr_in servaddr; memset((char *)&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = af_inet; int rtnval = inet_pton(af_inet, "127.0.0.1", &servaddr.sin_addr.s_addr); if(rtnval == 0){assert(null);} servaddr.sin_port = htons(10000); servaddr.sin_family = af_inet;

and run thread communicate each other.

but when phone call sentto servaddr fdpipe[1] fdpipe[0], bad address error appear. event when check address , port number printing, appear correct, ip:127.0.0.1 port:10000

char event = '1' std::cout << "port: " << ntohs(servaddr.sin_port) << std::endl; std::cout << "ip: " << inet_ntoa(servaddr.sin_addr) << std::endl; sendto(fdpipe[1], (const char*)(event), 1, 0,(struct sockaddr *)&servaddr,sizeof(servaddr));

e

you're casting event char pointer, not taking address of event mean do.

your sendto line should like;

sendto(fdpipe[1], &event, 1, 0,(struct sockaddr *)&servaddr,sizeof(servaddr));

a tip enable warnings in compiler, have caught suspicious cast.

c linux udp

Comments

Popular posts from this blog

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

mediawiki - How do I insert tables inside infoboxes on Wikia pages? -

Local Service User Logged into Windows -