我尝试通过TCP连接传输文件(在base64中)和一些其他数据
client -> server: request:file:<filename>
server -> client: file:size:<n>
server -> client: file:data:<base64>
server -> client: file:name:<name>
在c中,我在服务器端这样做
char filelength[64];
sprintf(filelength, "file:length:%d\n", len);
send(threadinfo->fd, filelength, strlen(filelength), 0);
char fileBase64Data[len+128];
sprintf(fileBase64Data, "file:data:%s\n", buffer);
send(threadinfo->fd, fileBase64Data, strlen(fileBase64Data), 0);
char fileready[128];
sprintf(fileready, "file:name:%s\n", filename);
send(threadinfo->fd, fileready, strlen(fileready), 0);
在客户端,我调用了3次recv(),但是在第2次recv()调用结束时传递了来自第3个send()调用的数据。
当我嗅探数据包时,我看到最后一个字符串“ file:name:”没有在单独的数据包中发送。它被连接到“数据包”的末尾(第二个)。我如何确保它以单独的数据包发送?
Data Payload
68 f2 a4 49 6b 85 ce 50 18 01 04 d3 1a 00 00 42 h..Ik..P.......B
66 58 30 5a 70 62 6d 52 44 62 47 39 7a 5a 55 41 fX0ZpbmRDbG9zZUA
30 41 46 39 66 62 57 6c 75 62 33 4a 66 61 57 31 0AF9fbWlub3JfaW1
68 5a 32 56 66 64 6d 56 79 63 32 6c 76 62 6c 39 hZ2VfdmVyc2lvbl9
66 41 46 39 66 61 57 31 77 58 31 39 54 62 47 56 fAF9faW1wX19TbGV
6c 63 45 41 30 41 46 39 66 61 57 31 77 58 31 39 lcEA0AF9faW1wX19
32 5a 6e 42 79 61 57 35 30 5a 67 42 66 59 32 78 2ZnByaW50ZgBfY2x
76 63 32 56 7a 62 32 4e 72 5a 58 52 41 4e 41 42 vc2Vzb2NrZXRANAB
66 58 32 6c 74 63 46 39 66 58 31 39 7a 5a 58 52 fX2ltcF9fX19zZXR
66 59 58 42 77 58 33 52 35 63 47 55 41 58 32 31 fYXBwX3R5cGUAX21
70 62 6d 64 33 58 32 6c 75 61 58 52 73 64 48 4e pbmd3X2luaXRsdHN
6b 65 57 35 66 5a 6d 39 79 59 32 55 41 58 31 52 keW5fZm9yY2UAX1R
73 63 30 64 6c 64 46 5a 68 62 48 56 6c 51 44 51 sc0dldFZhbHVlQDQ
41 58 31 39 70 62 58 42 66 58 30 52 6c 62 47 56 AX19pbXBfX0RlbGV
30 5a 55 4e 79 61 58 52 70 59 32 46 73 55 32 56 0ZUNyaXRpY2FsU2V
6a 64 47 6c 76 62 6b 41 30 41 46 39 4d 5a 57 46 jdGlvbkA0AF9MZWF
32 5a 55 4e 79 61 58 52 70 59 32 46 73 55 32 56 2ZUNyaXRpY2FsU2V
6a 64 47 6c 76 62 6b 41 30 41 46 39 66 61 57 31 jdGlvbkA0AF9faW1
77 58 31 39 58 55 30 46 54 64 47 46 79 64 48 56 wX19XU0FTdGFydHV
77 51 44 67 41 58 31 39 70 62 58 42 66 58 30 64 wQDgAX19pbXBfX0d
6c 64 45 4e 76 62 57 31 68 62 6d 52 4d 61 57 35 ldENvbW1hbmRMaW5
6c 51 55 41 77 41 46 39 66 61 57 31 77 58 31 39 lQUAwAF9faW1wX19
4d 62 32 46 6b 54 47 6c 69 63 6d 46 79 65 55 46 Mb2FkTGlicmFyeUF
41 4e 41 42 66 58 32 6c 74 63 46 39 66 63 33 52 ANABfX2ltcF9fc3R
79 59 33 4e 77 62 67 42 66 58 32 6c 74 63 46 39 yY3NwbgBfX2ltcF9
66 63 32 56 30 62 47 39 6a 59 57 78 6c 41 46 39 fc2V0bG9jYWxlAF9
66 55 6c 56 4f 56 45 6c 4e 52 56 39 51 55 30 56 fUlVOVElNRV9QU0V
56 52 45 39 66 55 6b 56 4d 54 30 4e 66 54 45 6c VRE9fUkVMT0NfTEl
54 56 46 39 46 54 6b 52 66 58 77 42 66 58 32 78 TVF9FTkRfXwBfX2x
70 59 6d 74 6c 63 6d 35 6c 62 44 4d 79 58 32 46 pYmtlcm5lbDMyX2F
66 61 57 35 68 62 57 55 41 58 31 39 66 5a 48 6c faW5hbWUAX19fZHl
75 58 33 52 73 63 31 39 70 62 6d 6c 30 58 32 4e uX3Rsc19pbml0X2N
68 62 47 78 69 59 57 4e 72 41 46 39 66 61 57 31 hbGxiYWNrAF9faW1
77 58 31 39 75 64 47 39 6f 63 30 41 30 41 46 39 wX19udG9oc0A0AF9
66 64 47 78 7a 58 33 56 7a 5a 57 51 41 58 31 39 fdGxzX3VzZWQAX19
66 59 33 4a 30 58 33 68 30 58 32 56 75 5a 46 39 fY3J0X3h0X2VuZF9
66 41 46 39 66 62 47 6c 69 64 33 4d 79 58 7a 4d fAF9fbGlid3MyXzM
79 58 32 46 66 61 57 35 68 62 57 55 41 58 33 5a yX2FfaW5hbWUAX3Z
6d 63 48 4a 70 62 6e 52 6d 41 46 39 66 61 57 31 mcHJpbnRmAF9faW1
77 58 31 39 46 62 6e 52 6c 63 6b 4e 79 61 58 52 wX19FbnRlckNyaXR
70 59 32 46 73 55 32 56 6a 64 47 6c 76 62 6b 41 pY2FsU2VjdGlvbkA
30 41 46 39 66 61 57 31 77 58 31 39 6d 64 33 4a 0AF9faW1wX19md3J
70 64 47 55 41 0a 66 69 6c 65 3a 6e 61 6d 65 3a pdGUA.file:name:
73 65 72 76 65 72 2e 65 78 65 0a server.exe.