通信を手助けしてあげるソフト(プロクシに近い挙動です)を作っています
クライアントが何人も来るのでスレッドで通信を仲介してあげようと思ったのですが
スレッドにソケットをまとめた構造体を渡すとセグメンテーション違反で落ちてしまいます。
多分引数の渡し方がおかしいのだと思うのですが正しい方法がわかりません。
なにか解決方法はありますでしょうか。
//スレッドには1つしか引数が渡せないので構造体にして複数渡す
typedef struct {
SOCKET sClient;
SOCKET sServer;
} SOCKTABLE;
//スレッド1
DWORD WINAPI thread(void* lpvoid)
{
SOCKTABLE *st;
st=(SOCKTABLE*)lpvoid;
ret = recv(st->sClient, buf, 1000,0);
send(st->sServer,buf,ret,0);
return 0;
}
//ここが呼び出される
void StartService(SOCKET sClient)
{
SOCKET sServer;
SOCKTABLE *st;
sServer=ConnectToServer();
st->sClient=sClient; //CreateThreadがあるとここで落ちる
st->sServer=sServer;
CreateThread(NULL , 0 , thread ,(LPVOID)st, 0 ,NULL);
return ;
}