anukavi 0 Light Poster

Before posting this question, i had gone thru related answers in many sites but cudnt get a solution to the problem.
I have followed the step needed for Socket timeout, but the timeout eventually pass for the first time but fails for second time.

Platform : VC++ 2012 MFC Server Socket prog

I have 3 buttons which reads as USER_LIST_DETAILS , START and CANCEL
When the user clicks the USER_LIST_DETAILS button, I Open the Socket

void CAboutDlg::OnBnClickedUserList()
  if (ssocket == INVALID_SOCKET)

idc_textbox.put_Text("PRESS START");

void CAboutDlg::OpenSocket()
   ss = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//SOCKET ss is global variable
   //binding and listen are done here.

Then the user has to choose START, for the functions to take place.
void CAboutDlg::OnBnClickedStart()
  struct timeval timer;
  struct fd_set master_set;
  int val;

  sin.sin_family = AF_INET;
  sin.sin_port = htons((u_short)myPort);
  sin.sin_addr.s_addr = INADDR_ANY;


  timer.tv_sec  = 60;//60 second wait time
  timer.tv_usec = 0;


  val = select(ss+1,&master_set,NULL,NULL,&timer);

  if(val == -1)

  if(val == 0)
   MessageBox("Timeout..Press CANCEL for Home Screen");//The user will choose CANCEL button

  if(val > 0)
    //non block mode is set here    
    SOCKET cs = accept(ss,NULL,NULL);
    //read the user file and display them


void CAboutDlg::OnBnClickedCancel()
  //here i show the 3 buttons

**Problem :**
When i choose USER_LIST Button, and on START, the system waits for 60 seconds and displays the message "Timeout.."
Then i click the CANCEL button and chooses USER_LIST Button again and then press ENTER
now the val = select(....) always gives me -1. WHY??

I had reset the fdset values. ie whenever the START button is called, FD_ZETO,FD_SET is initialised.
Where is the coding error?
Pls help me to sort it out.
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.