论坛: 编程破解 标题: staticvoid*ListenThread(void*data) 复制本贴地址    
作者: lxlmf [boadi]    论坛用户   登录
我实在搞不懂这是不是定义一个ListenThread结构的data,那为什么data还要定义个void

还有

void *CComm::ListenThread( void *data )
{
char buf[4096];
CComm *Comm = (CComm *)data;
int len = sizeof(Comm->client);
while(1) // 一直循环
{
//接收数据
int result = recvfrom( Comm->ListenSocket, buf, sizeof(buf)-1, 0, (sockaddr *)&Comm->client, (socklen_t *)&len);
if ( result > 0 )
{
buf[result] = 0;
printf("Message received from host %s port %i\n", inet_ntoa(Comm->client.sin_addr), ntohs(Comm->client.sin_port));
printf(">> %s", buf);
fflush(0);
}
}
}

CComm *Comm = (CComm *)data;这到底是什么意思
是不是定义个ccomm类的comm指针,然后赋个初始值什么等号后面什么强制转型的
这到底是什么冬冬啊
如果类也是个结构
这到底定义了什么或赋了 什么
谁能帮我解开这个迷啊



地主 发表时间: 05-08-30 11:56

回复: 286 [unique]   版主   登录
void *CComm::ListenThread( void *data )
{
CComm *Comm = (CComm *)data;

data是作为参数传进来的,之所以是void *型的,是事先他不知道是什么类型,当然也可以定义成char *类型。

CComm是个类,*Comm是指向这样类的指针,注意这个类没有实体,当用(CComm *)data强制转换以后,这个类的指针就可以把data缓冲区里的数据,当成实体了,从而可以直接通过访问CComm成员变量的方式,访问data中的数据。



B1层 发表时间: 05-08-30 12:40

回复: 286 [unique]   版主   登录
class IP
{
    unsigned char ip1;
    unsigned char ip2;
    unsigned char ip3;
    unsigned char ip4;
};

main()
{
    int ip=1233545,*pip=&ip;//这是4个字节组成的IP地址。
    IP *ClassIp=(IP *)pip;//本来pip指向int型的ip,此时那个类的指针就指向了ip这个int值处。
    if (ClassIp.ip1==255) //下面就可以以类成员变量的形式访问其中的值了。
}
   
}


B2层 发表时间: 05-08-30 12:46

回复: lxlmf [boadi]   论坛用户   登录
请问这是关于C++中哪个知识点

B3层 发表时间: 05-08-30 16:54

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号