X-Git-Url: http://royale.zerezo.com/git/?p=zeRace;a=blobdiff_plain;f=server.c;fp=server.c;h=047d98536201263751eb4e81c5e704f6ed050567;hp=c6da73074285dfe04e2ccaafcd39ec502029d662;hb=ee6ec6d95d78f74973a2ba97077cc94709bb6c61;hpb=dde2df6289f6daf23ee1632560c4c89061ef2f4a diff --git a/server.c b/server.c index c6da730..047d985 100644 --- a/server.c +++ b/server.c @@ -54,14 +54,14 @@ void announce(char *name,int clients) printf("announcing server... "); fflush(stdout); - if(SDLNet_ResolveHost(&ip,"royale.zerezo.com",80)==-1) + if (SDLNet_ResolveHost(&ip,"royale.zerezo.com",80)==-1) { fprintf(stderr,"SDLNet_ResolveHost: %s\n",SDLNet_GetError()); return; } tcpsock=SDLNet_TCP_Open(&ip); - if(!tcpsock) + if (!tcpsock) { fprintf(stderr,"SDLNet_TCP_Open: %s\n",SDLNet_GetError()); return; @@ -72,11 +72,12 @@ void announce(char *name,int clients) len=strlen(temp); result=SDLNet_TCP_Send(tcpsock,temp,len); - if(resultname); tmp+=strlen(tmp)+1; - memcpy(tmp,&time,sizeof(int)); - tmp+=sizeof(int); - memcpy(tmp,&network_speed,sizeof(int)); - tmp+=sizeof(int); + SDLNet_Write32(time,tmp); + tmp+=4; + SDLNet_Write32(network_speed,tmp); + tmp+=4; packet->len=(void *)tmp-(void *)packet->data; for (i=0;ix; clients[i].car.y=tracklist->y; clients[i].car.w=30; @@ -233,10 +235,10 @@ int main(int argc,char *argv[]) *tmp++=0; /* no startup countdown */ strcpy(tmp,tracklist->name); tmp+=strlen(tmp)+1; - memcpy(tmp,&time,sizeof(int)); - tmp+=sizeof(int); - memcpy(tmp,&network_speed,sizeof(int)); - tmp+=sizeof(int); + SDLNet_Write32(time,tmp); + tmp+=4; + SDLNet_Write32(network_speed,tmp); + tmp+=4; packet->len=(void *)tmp-(void *)packet->data; SDLNet_UDP_Send(udpsock,-1,packet); break; @@ -264,10 +266,11 @@ int main(int argc,char *argv[]) { int temp; tmp+=strlen(tmp)+1; - memcpy(&temp,tmp,sizeof(int)); - tmp+=sizeof(int); - if (clients[id].lasttime==temp) + temp=SDLNet_Read32(tmp); + tmp+=4; + if (clients[id].lasttime<=temp) { + tmp+=temp-clients[id].lasttime; /* printf("servertime = %d lasttime = %d temp = %d strlen(tmp) = %d\n",time,clients[id].lasttime,temp,strlen(tmp)); */ /*printf("keys = %s\n",tmp);*/ while (*tmp) @@ -298,20 +301,26 @@ int main(int argc,char *argv[]) tmp=packet->data; strcpy(tmp,"positions"); tmp+=strlen(tmp)+1; - memcpy(tmp,&time,sizeof(int)); - tmp+=sizeof(int); /* for server time */ - tmp+=sizeof(int); /* for client time */ - tmp+=sizeof(int); /* for number of cars */ + SDLNet_Write32(time,tmp); + tmp+=4; /* for server time */ + tmp+=4; /* for client time */ + tmp+=2; /* for number of cars */ nb=0; for (j=0;jdata+strlen("positions")+1+sizeof(int)+sizeof(int),&nb,sizeof(int)); + SDLNet_Write16(nb,packet->data+strlen("positions")+1+4+4); + SDLNet_Write32(clients[i].lasttime,packet->data+strlen("positions")+1+4); packet->len=(void *)tmp-(void *)packet->data; - memcpy(packet->data+strlen("positions")+1+sizeof(int),&clients[i].lasttime,sizeof(int)); packet->address=clients[i].address; SDLNet_UDP_Send(udpsock,-1,packet); } @@ -329,7 +338,7 @@ int main(int argc,char *argv[]) tmp=packet->data; strcpy(tmp,"finish"); tmp+=strlen(tmp)+1; - tmp+=sizeof(int); /* space for number */ + tmp+=2; /* space for number */ nb=0; for (i=0;i<10;i++) { @@ -343,14 +352,14 @@ int main(int argc,char *argv[]) { sprintf(tmp,"%s : %d",clients[best_id].pseudo,best_sc); tmp+=strlen(tmp)+1; - memcpy(tmp,&clients[best_id].car.color,sizeof(int)); - tmp+=sizeof(int); + SDLNet_Write16(clients[best_id].car.color,tmp); + tmp+=2; clients[best_id].car.lap=-1; nb++; printf("top %d : %s - %d\n",nb,clients[best_id].pseudo,best_sc); } } - memcpy(packet->data+strlen("finish")+1,&nb,sizeof(int)); + SDLNet_Write16(nb,packet->data+strlen("finish")+1); packet->len=(void *)tmp-(void *)packet->data; for (i=0;inext; }