获取套接字句柄以供稍后进行比较

时间:2014-11-22 21:08:36

标签: c++ sockets handle

我迷上了游戏的一些套接字功能。然后可以从该游戏中的套接字获取接收和发送数据。问题是:有超过1个套接字。

我怎样才能获得FIRST套接字的句柄?我连接了SOCKET函数,如下所示:

SOCKET GameMainSocket;

SOCKET _stdcall WSAAPI nSocket(int af,int type,int protocol)
{
     UnHookFunction("ws2_32.dll", "socket", KSocketHook);
     GameMainSocket = socket(af, type, protocol);
     HookFunction("ws2_32.dll", "socket", (LPVOID*) nSocket, KSocketHook);
     return GameMainSocket;
}

但是后来,当我尝试在hooked send和recv函数中进行比较时,就像这样:

int __stdcall nSend(SOCKET s, const char *buf, int len,int flags)
{ 
  if (s = GameMainSocket)
  {
    // Allow send
  }
}

刚跳过代码,所有检查都是真的。

**我真正的疑问是:我如何识别应用程序创建的每个套接字?

提前致谢!

问题已经完全解决。

我的代码现在是:

if (s == GameMainSocket) 
{
// The magic goes here, encrypt packet with XOR (server does the same)
    char* buf2 = (char*) malloc (len);
    memcpy(buf2, buf, len);
    //buf2[0] = buf2[0];
    buf2[0] = buf2[0] ^ int("x") % 255;

}

1 个答案:

答案 0 :(得分:4)

if (s = GameMainSocket)

正在执行赋值,该赋值将返回指定的值,如果它不为0则为true。 你的意思是做什么?

if (s == GameMainSocket)