c++ - BSD Sockets Invalid Argument at connection -



c++ - BSD Sockets Invalid Argument at connection -

i maintain getting invalid argument error when seek connect client server. couple threads online said can happen when addrlen not right, tried changing literal value after counting length , did not work. tried strlen() no luck. anyways, relevant code -

server -

struct sockaddr name; int main(int agrc, char** argv) { int sock, new_sd, adrlen; //sock socket, new_sd connection socket name.sa_family = af_inet; strcpy(name.sa_data, "127.0.0.1"); adrlen = strlen(name.sa_data) + sizeof(name.sa_family); //make socket sock = socket(af_inet, sock_stream, 0); if (sock < 0) { printf("\nbind error %m", errno); exit(1); } //unlink , bind unlink("127.0.0.1"); if(bind (sock, &name, adrlen) < 0) printf("\nbind error %m", errno); //listen if(listen(sock, 5) < 0) printf("\nlisten error %m", errno); //accept new_sd = accept(sock, &name, (socklen_t*)&adrlen); if( new_sd < 0) { printf("\naccept error %m", errno); exit(1); }

client -

int main(int agrc, char** argv) { int sock, new_sd, adrlen; sock = socket(af_inet, sock_stream, 0); if (sock < 0) { printf("\nserver socket failure %m", errno); exit(1); } //stuff server socket name.sa_family = af_inet; strcpy(name.sa_data, "127.0.0.1"); adrlen = strlen(name.sa_data) + sizeof(name.sa_family); cout<<"\nadrlen: "<<adrlen<<"\n"; if(connect(sock, &name, adrlen) < 0) { printf("\nclient connection failure %m", errno); exit(1); }

i don't see wrong, guess might overlooking or unaware of something. help appreciated.

well big problem misunderstanding sockaddr struct!

firstly utilize sockaddr_in.

you write code more following:

sockaddr_in sai; sai.sin_family = af_inet; sai.sin_port = htons( 12345 ); /// or whatever port wish use. inet_aton("127.0.0.1", &sai.sin_addr.s_addr);

note: htons converts short value host network format. host big or little endian. network big endian.

c++ connection client-server sockets invalid-argument

Comments

Popular posts from this blog

iphone - Dismissing a UIAlertView -

intellij idea - Update external libraries with intelij and java -

javascript - send data from a new window to previous window in php -