Using CSocket in a multithread
Ahmed
Monday, October 21, 1996
Environment: Window NT 4.0, VC++ 4.2
Hi,
I want to start a listenning socket in a new thread other than the main
UI thread.
My problem is the listening socket dosen't get any sockets notifications.
Any help in this regard would be appreciated.
Thanx
A.S
Phil Daley -- pdaley@relay.com
Tuesday, October 22, 1996
[Mini-digest: 4 responses]
At 12:18 PM 10/21/96 -0400, you wrote:
=====================================
>
>Environment: Window NT 4.0, VC++ 4.2
>
>I want to start a listenning socket in a new thread other than the main
>UI thread.
>My problem is the listening socket dosen't get any sockets notifications.
>Any help in this regard would be appreciated.
>
==================================
I don't understand. I think you need to give more information.
Do you create and bind the socket in the main thread and then pass it to the new thread to listen?
Or is everything done in the new thread?
Is it a blocking socket?
Does it work if everything is in the main thread?
8080,0000,8080Phil Daley
Relay Technology
8080,0000,8080http://www.conknet.com/~p_daley
-----From: "Dan Maher"
Your thread must have a message pump for it to get notifications. The MFC
socket classes create a hidden window to receive messages. Without a
message pump, no messages are processed and you won't get notifications.
Also, make sure that your socket is created on the thread that will be
processing the notifications. Otherwise, MFC will create the "hidden"
notification window on the wrong thread and you will end up with a
performance bottleneck there.
dM
-----From: "George Pavlou"
You can use the WSAAsyncSelect(hsocket, hWnd, WSA_READ, FD_READ |
FD_CLOSE)
which sends a WSA_READ message.
|--------------------------------------------------------------------------
|
George Pavlou Tantalus, Inc.
Windows Games Programmer Key West, FL
georgep@tansoft.com www.mpgn.com
|--------------------------------------------------------------------------
|
-----From: "Luke Stephens"
Are you using a CWinThread or just a worker thread?
You must have a user interface thread (CWinThread) in order for it to work
properly.
Luke Stephens
luker@tfs.net
Doug Boone -- dboone@fasttax.com
Wednesday, October 23, 1996
[Mini-digest: 2 responses]
What's your logic for starting the threads? For starting the sockets? Do
you start the threads which create the socket and then the wait on listen?
Are you using CSocket or CAsyncSocket? What's your favorite color?
----------
> From: Sadek, Ahmed
> To: 'mfc-l'
> Subject: Using CSocket in a multithread
> Date: Monday, October 21, 1996 11:18 AM
>
>
> Environment: Window NT 4.0, VC++ 4.2
>
> Hi,
>
> I want to start a listenning socket in a new thread other than the main
> UI thread.
> My problem is the listening socket dosen't get any sockets notifications.
> Any help in this regard would be appreciated.
>
> Thanx
>
> A.S
>
-----From: "Hill, Les"
The key is to NOT use CAsynchSocket::Accept().
Use ::accept() to get the new socket handle. Then pass this to the worker
thread (perhaps as a member variable). Inside the worker thread use
CSocket::Attach() to
bind the CSocket object to the new socket handle -- this creates the hidden
window properly.
Les Hill
leh@cybercom.net
Available for contract programming
| Вернуться в корень Архива
|