linux - C++ Socket Connection automatically establishing? -


i programming c++ module creates socket server thread, polls accept() function every 1ms. have test module spoofs client connection running. test module initiates creation of server thread. after thread created , verified running, client runs connect() command test. code states connection established, returning 0 on connect command. however, accept() running in server thread never receives connection.

the server bound accepting ip:50000, , client not bound, has 127.0.0.1:50000 set destination. linux environment automatically accepting connection?

here code server's socket:

int nsocket; int non = 1; int ncontrol; struct sockaddr_in  sserveraddress;  nsocket = socket(pf_inet, sock_stream, ipproto_tcp); if(nsocket < 0) {     std::cout << "failed create socket\n"; } if(setsockopt(nsocket, sol_socket, so_reuseaddr, &non, sizeof(int)) < 0) {     std::cout << "failed set socket option\n"; } ncontrol = fcntl(nsocket, f_getfl); if(fcntl(nsocket, f_setfl, o_nonblock | ncontrol) < 0) {     std::cout << "set not blocking failed\n"; }  memset(&sserveraddress, 0x00, sizeof(struct sockaddr_in)); sserveraddress.sin_family = af_inet; sserveraddress.sin_addr.s_addr = htonl(inaddr_any); sserveraddress.sin_port = htons(mtlistenport);  if(bind(nsocket, (struct sockaddr*)&sserveraddress, sizeof(struct sockaddr_in)) < 0) {     std::cout << errno << "bind failed\n"; }  if(listen(nsocket, maxpending) < 0) {     std::cout << "listen failed\n"; } 

here code test client's socket:

int nsocket;  nsocket = socket(pf_inet, sock_stream, ipproto_tcp); if(nsocket < 0) {     std::cout << "failed create socket\n"; }  struct sockaddr_in serveraddress; serveraddress.sin_family = af_inet; inet_aton(local_host, &serveraddress.sin_addr); serveraddress.sin_port = htons(listen_port00); char msg[] = "hello world.";  usleep(10000);  if (connect(nsocket, (struct sockaddr *) &serveraddress, sizeof(serveraddress)) < 0) {     std::cout << errno << "could not connect server.\n"; }  usleep(10000);  if (sendto(nsocket, msg, strlen(msg), 0, (struct sockaddr *) &serveraddress, sizeof(serveraddress)) < 0) {     std::cout << errno << "could not send data server.\n"; } 

here small part of thread runs accept code.

while(mblistening) {     nmessengersocket = accept(mnsocket, (struct sockaddr*)&sclientaddr, &tclientaddrlength);     if(nmessengersocket >= 0)     {         std::cout << "accepted connection " << inet_ntoa(sclientaddr.sin_addr) << std::endl;         mnconnections++;         mblistening = false;     }     mthreadrunningtime++;     usleep(1000); } 

make sure tclientaddrlength initialized sizeof sclientaddr before calling accept(). common error.

don't silently ignore errors. examine error code in errno because tells went wrong.


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -