|
안녕하세요...
제가 좀 허접스럽습니다만은..
제가 쓰던 방식을 말씀드릴께요..
먼저 구조체를 하나 잡은다음
typedef struct _USERINFO
{
BYTE nMsg;
BYTE nMode;
SOCKET hSocket;
SOCKADDR_IN RemoteAddr;
SYSTEMTIME ConnectTime;
} USERINFO;
ListenThread(메인 함수에서 호출한 쓰레드 함수)에서 구조체를 초기화하고
UserThread(쓰레드함수)를 호출하면서 구조체를 넘겨줍니다.
DWORD WINAPI ListenThread(void* pData)
{
USERINFO* pUserInfo;
HANDLE hUserThread;
while (1) {
pUserInfo = new USERINFO;
pUserInfo->nMsg = 0;
pUserInfo->nMode = 0;
pUserInfo->hSocket = accept(g_hListenSocket,
(LPSOCKADDR)&pUserInfo->RemoteAddr, &nLen);
hUserThread = CreateThread(NULL, 0, UserThread, pUserInfo, 0, &dwThreadID);
...........
...........
}
...........
...........
}
UserThread에서는 다음과 같이 사용을 합니다.
DWORD WINAPI UserThread(void* pData)
{
USERINFO* pUserInfo;
pUserInfo = (USERINFO*)pData;
......
.....
}
답변이 될려는지 잘 모르겠습니다만....
조그만 도움이라도 되었으면 좋겠습니다..
수야 님이 쓰신 글 :
: 안녕하세요
:
: 우선 답변 감사드립니다. ^^
:
: 저도 구조체로 넘기구 있거든요
:
: 그런데 구조체로 넘긴이후 방법을 모르겠어요
:
: 사용을 못하겠더군요.. ㅡ_ㅡ
:
: 스트럭트를 넘긴후 그 스트럭트를 어떻게 사용해야하나요? ^^;;
:
: 넘 허접질문이지만.. 부탁드리겠습니다. ^^
:
:
:
: james 님이 쓰신 글 :
: : 안냐세요..저는 ThreadInfo에 들어갈것들을 구조체로 정의해서 집어넣습니다..
: : 수야님께서 아마 지금 네떡을 하실텐데..
: : 저는 네떡할때 서버쪽에서 각 클라이언트마다 스레드를 만들은 적이 있었는데..
: : 그때 각 유저들의 정보(IP,time,기타 인자들..)를 UserInfo라는 구조체로 만들어서
: : 스레드함수의 전달인자로 넘긴적이 잇거든용....
: :
: :
: : 도움이 될려나 몰겠습니다...
: :
: : 그럼 꾸벅~~~
: :
: :
: : 수야 님이 쓰신 글 :
: : : DWORD nThreadID;
: : : CreateThread(0, 0, RecvThread, (void*)ThreadInfo, 0, &nThreadID);
: : : 이렇게 호출하여
: : :
: : : DWORD WINAPI RecvThread(void *ThreadInfo) 이렇게 함수를 정의했습니다.
: : :
: : : 저는 함수 인자값이 ThreadInfo 말고 또 다른 것들이 필요한데요
: : :
: : : 어떻게 추카시켜주어야 하나요?
: : :
: : : 답변부탁드릴께요
|