我遇到了struct
的问题这是代码中的简要说明:
struct registration{
long port; // port number
char host_name[MAXSIZE]; // host name of the client
};
struct registration regDB[MAXUSER]; //
void handelClient(struct packet *pkt){
int k;
for(k=0;k<MAXUSER;k++){
printf("\nIndex:%i H:%s P:%ld",k,regDB[k].host_name,regDB[k].port);
}
}// handelC...
int main( int argc , char *argv[]){
int pid;
while(1){
if((clientSock=accept(serverSock,(struct sockaddr *)&clientInfo,&sockLength))==-1){
perror("\nError Accept: ");
}// if
pid=fork();
if(pid<0){
perror("\nError Fork");
}
if(pid==0){
handleClient(clientSock);
}
}// while
return 0;
}//main
问题是每次调用handleClient()都会创建 regDB 的新结构
struct registration regDB[MAXUSER]
因此,当我在 handleClient()的每次调用中打印 regDB 的包含时,会有所不同。 我想在整个程序中使 regDB 静态 我试着这样做:
static struct registration regDB[MAXUSER];
但是,它不起作用,仍然每次调用创建它自己的结构。