6 int sock, namelen, seq = 0;
9 int main(int argc,char **argv);
12 int main(argc,argv) int argc; char** argv; {
16 set_srv_send_delay( atoi(argv[1]) );
17 printf("delay set to %d ms\n",atoi(argv[1]));
24 if( retval<0 ) perror("fork failed"),exit(0);
25 if( retval>0 ) exit(0);
29 freopen("srv.log","a",stdout);
30 freopen("srv.log","a",stderr);
32 sock = sock_open( SOCK_DGRAM, "udp", NULL, NULL, PORT, AS_SERVER );
44 int namelen = sizeof(it);
50 size=sock_srv_crc_recv(sock, &m, sizeof(m), &it, &namelen );
52 if( size>0 ) /* there was no error & I'm not interested in 0 size */
53 switch( ntohl(m.req) ){
58 if( stat(m.data,&status) ) status.st_size=0;
60 printf("file %s size %d\n",m.data,status.st_size);
63 *(int*)(m.data)=htonl(status.st_size);
64 sock_srv_crc_send(sock,&m,HEAD+sizeof(int),&it,namelen);
70 FILE *f=fopen(m.data+2*sizeof(int),"rb");
72 int packets = ntohl(((int *)m.data)[1]);
73 int seek=ntohl(((int *)m.data)[0]);
76 printf("file %s from %d %d packets\n",
77 m.data+2*sizeof(int),seek,packets);
80 fseek(f,DATA_PIECE*seek,0);
81 while( (size=fread(m.data,1,DATA_PIECE,f)) > 0 ){
84 if(sock_srv_crc_send(sock,&m,HEAD+size,&it,namelen)<0)
88 if( errors>=10 ) break;
89 if( cnt==packets ) break;
92 while( sock_poll( sock, 0 ) )
93 sock_srv_crc_recv(sock,&m,sizeof(m),&it,&namelen);
98 printf("srv:unknown req %d\n",ntohl(m.req));