Programming Forums
User Name Password Register
 

RSS Feed
FORUM INDEX | TODAY'S POSTS | UNANSWERED THREADS | ADVANCED SEARCH

 
 
Thread Tools Display Modes
Prev Previous Post in Thread   Next Post in Thread Next
Old Apr 29th, 2005, 1:08 AM   #1
layer
Hobbyist Programmer
 
Join Date: Feb 2005
Posts: 112
Rep Power: 4 layer is on a distinguished road
Unhappy WinSock accept() hangs program in Do loop...

Hey guys, well, I started over with my WinSock functions, and it's going tons better then it did before... So I had a question. I start up Winsock. I create a socket, I bind it, I listen on it. Now, after I start the listening socket, I go into a Do loop, and accept clients... Heres the loop which I'm having troubles with.
do{
             clientS = accept(listenS, NULL, NULL);
             /*if (WM_DESTROY == 1){
             closesocket(listenS);
             WSACleanup();
             PostQuitMessage (0);  // exit  
             } */ 
             Sleep(250);  // PROGRAM HANGS IN THIS LOOP, IT STOPS RESPONDING... AND I TRIED THE IF WM_DESTROY :(
}while (clientS == INVALID_SOCKET);
Ok, for one, I want to wait for a client in a loop and STILL check to see if WM_DESTROY command has been sent.... As you can see, I commented out the part that I tried to check if WM_DESTROY was initiated. Any suggestions on that?


Now, I have this code:
char IpMem[40];
char sPort[10];
GetWindowText(hPortData, sPort, sizeof(sPort)); 
char sIp[30];
int iIp, iPort;
GetWindowText(hIPData, sIp, sizeof(sIp));
strcat(IpMem, sIp);
strcat(IpMem, ":");
strcat(IpMem, sPort);
MessageBox(NULL, IpMem, "Ip and Port", MB_OK);
iIp = atoi(sIp);
iPort = atoi(sPort);
listenS = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (listenS == INVALID_SOCKET) 
{
                          WSACleanup();
                           closesocket(listenS);
                            MessageBox(NULL, "Failed to create socket, SweetTalk will automatically exit now.", "Error", MB_ICONEXCLAMATION | MB_OK);
                            return EXIT_SUCCESS;
                         }
                         SOCKADDR_IN info;
                         info.sin_family = AF_INET;
                         info.sin_addr.s_addr = INADDR_ANY; // should I replace INADDR_ANY with iIp?
                         info.sin_port = htons(8888); // should I replace 8888 with iPort?
                         ret = bind(listenS,(LPSOCKADDR)&info,sizeof(struct sockaddr));
                         if (ret == SOCKET_ERROR)
                         {
                            WSACleanup();
                            closesocket(listenS);
                            MessageBox(NULL, "Failed to bind socket, SweetTalk will automatically exit now.", "Error", MB_ICONEXCLAMATION | MB_OK);
                            return EXIT_SUCCESS;
                         }
And there you can see my comments, which are my questions...
Should I replace "INADDR_ANY" with iIp? And should I replace "htons(8888)" with iPort?
If you need any more info on what I need help with, please ask...
Thanks a ton times a million
layer is offline   Reply With Quote
 

Bookmarks

« Previous Thread in Forum | Next Thread in Forum »

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump




DaniWeb IT Discussion Community
All times are GMT -5. The time now is 10:49 PM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC