Connecting Tech Pros Worldwide Help | Site Map

Trouble creating a thread

  #1  
Old July 22nd, 2005, 12:24 PM
Zenon
Guest
 
Posts: n/a
Folks,
I am having a problem storing a port number read from a registry and
creating a thread, and I cannot figure out why. Here are the relevant
details:

I have a struct called SOCKET_INFO in a header file called
socketthreadcommon.h

typedef struct{
char szHost[50];
int nPort;
DWORD dwLastError;
BOOL bListening;
BOOL bCalling;
BOOL bConnected;
BOOL bAbort;
BOOL bTestWithoutSocket;
UINT nMsgSentCount;
float fHeadingInStatusMsg;

HANDLE hEventQueueNotEmpty;
MsgQueueSocketType MsgQueue[MSGQUEUEMAX];
UINT MsgQueueFreeIdx;
UINT MsgQueueUsedIdx;
} SOCKET_INFO;


I create an instance of this struct in a file called realerdlg.h

SOCKET_INFO m_ServerSocketInfo;



realerdlg.cpp sets the value of the nPort member

m_ServerSocketInfo.nPort = (int)(dwPort);




and finally, I am attempting to create a socket with the statement:

CWinThread *lpThread = AfxBeginThread(ServerSocketThread, (LPVOID)
&m_ServerSocketInfo);




The dwPort variable is correct and verified. In the
serversocketthread.cpp class, I cannot pick up the
value of nPort. The constructor there is

UINT ServerSocketThread( LPVOID lpInf )
{

SOCKADDR_IN Addr;
int AddrLen;
SOCKET_INFO* lpInfo = (SOCKET_INFO *) lpInf;
int nRetValue = 0;
CSocket ServerSocket;
BOOL bDone = FALSE;
CSocket ClientSocket;
MsgQueueSocketType MsgQueue;
int nBytes;
CRegistry Registry; // Registry object
PROGRAM_TYPE Program;

CTime CurrentTime;

}



This is code I inherited and am trying to debug... Does anyone have
any ideas?

thanks very much,

Zenon
  #2  
Old July 22nd, 2005, 12:24 PM
Petec
Guest
 
Posts: n/a

re: Trouble creating a thread


Zenon wrote:[color=blue]
> Folks,
> I am having a problem storing a port number read from a registry and
> creating a thread[/color]
<snip>[color=blue]
> This is code I inherited and am trying to debug... Does anyone have
> any ideas?[/color]

Standard C++ (the topic of this group) does not support threading, so please
ask in a group dedicated to your platform.
In your case it appears to be Microsoft Windows with MFC, so
microsoft.public.vc.mfc would be a good one.

- Pete
[color=blue]
>
> thanks very much,
>
> Zenon[/color]



  #3  
Old July 22nd, 2005, 12:24 PM
Victor Bazarov
Guest
 
Posts: n/a

re: Trouble creating a thread


Zenon wrote:[color=blue]
> Folks,
> I am having a problem storing a port number read from a registry and
> creating a thread, and I cannot figure out why. Here are the relevant
> details:
>
> I have a struct called SOCKET_INFO in a header file called
> socketthreadcommon.h
>
> typedef struct{
> char szHost[50];
> int nPort;
> DWORD dwLastError;
> BOOL bListening;
> BOOL bCalling;
> BOOL bConnected;
> BOOL bAbort;
> BOOL bTestWithoutSocket;
> UINT nMsgSentCount;
> float fHeadingInStatusMsg;
>
> HANDLE hEventQueueNotEmpty;
> MsgQueueSocketType MsgQueue[MSGQUEUEMAX];
> UINT MsgQueueFreeIdx;
> UINT MsgQueueUsedIdx;
> } SOCKET_INFO;
>
>
> I create an instance of this struct in a file called realerdlg.h
>
> SOCKET_INFO m_ServerSocketInfo;[/color]

Let me guess... It's a data member of some class, isn't it?
[color=blue]
> realerdlg.cpp sets the value of the nPort member
>
> m_ServerSocketInfo.nPort = (int)(dwPort);
>
>
>
>
> and finally, I am attempting to create a socket with the statement:
>
> CWinThread *lpThread = AfxBeginThread(ServerSocketThread, (LPVOID)
> &m_ServerSocketInfo);[/color]

'AfcBeginThread' is not a standard C++ function. You would be much better
off asking in a newsgroup where it's on topic, like a Windows programming
newsgroup or an MFC one...
[color=blue]
>
>
>
>
> The dwPort variable is correct and verified.[/color]

"Correct and verified" where? Before you call 'AfxBeginThread'?
[color=blue]
> In the
> serversocketthread.cpp class, I cannot pick up the
> value of nPort. The constructor there is
>
> UINT ServerSocketThread( LPVOID lpInf )
> {
>
> SOCKADDR_IN Addr;
> int AddrLen;
> SOCKET_INFO* lpInfo = (SOCKET_INFO *) lpInf;
> int nRetValue = 0;
> CSocket ServerSocket;
> BOOL bDone = FALSE;
> CSocket ClientSocket;
> MsgQueueSocketType MsgQueue;
> int nBytes;
> CRegistry Registry; // Registry object
> PROGRAM_TYPE Program;
>
> CTime CurrentTime;
>
> }
>
>
>
> This is code I inherited and am trying to debug... Does anyone have
> any ideas?[/color]

<offtopic>
The simplest idea I have is that your thread does not share the address
space with the rest of the program. When you pass in the pointer value,
it gets the pointer, but it's a pointer in a completely different area of
the process memory.
</offtopic>

Try asking in a Microsoft newsgroup, like comp.os.ms-windows.programmer.*

Victor
Closed Thread


Similar Threads
Thread Thread Starter Forum Replies Last Post
Passing Objects Into Worker Thread Function joey.powell@topscene.com answers 14 July 27th, 2006 09:55 AM
Creating an array of objects when the object type is not known at design time StuartJ answers 1 July 4th, 2006 12:15 PM
having trouble with basic multithreading Winbatch answers 12 November 14th, 2005 07:39 PM
Python/C API -- trouble creating objects DPhelps@linuxmail.org answers 0 July 19th, 2005 02:59 AM