Beste tweakers,
Ik heb een stukje c code geschreven dat prima werkt (hoera), totdat ik de buffer verhoog. Het ontvangen bestand is dan groter dan het origineel en dus corrupt.
Het werkt tot ongeveer 8kb. Iemand enig idee?
Ik heb een stukje c code geschreven dat prima werkt (hoera), totdat ik de buffer verhoog. Het ontvangen bestand is dan groter dan het origineel en dus corrupt.
Het werkt tot ongeveer 8kb. Iemand enig idee?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| uint64_t sendBuffer(struct file *openFile, struct tcpHandle *connection) //check
{
uint64_t size, result = 0;
sendSize(openFile->properties.st_size, connection);
char buffer[TRANSFERBUFFER];
while ((size = read(openFile->handle, buffer, TRANSFERBUFFER)) > 0)
{
result += send(connection->handle, buffer, size, 0);
//printf("size : %lld result %lld\n", size, result);
}
close(openFile->handle);
if( result != (size = recvSize(connection)) )
{
printf("filesize %llu and sendsize %llu do not match",size, result);
}
return result;
}
uint64_t recvBuffer(struct file *openFile, struct tcpHandle *connection) // check
{
uint64_t size = recvSize(connection), result = 0;
char buffer[TRANSFERBUFFER];
while(size > TRANSFERBUFFER)
{
size -= recv(connection->handle,buffer,TRANSFERBUFFER,0);
result += write(openFile->handle, buffer, TRANSFERBUFFER);
}
if(size > 0)
{
recv(connection->handle, buffer, size, 0);
result += write(openFile->handle, buffer, size);
}
close(openFile->handle);
sendSize(result, connection);
return result;
} |
Ik kwam, Ik ben, En ik zal er altijd zijn