我使用底部代码在 2 个客户端之间通过套接字传输文件。当客户端 A 想向客户端 B 发送文件时,它将该文件发送到服务器,服务器收到该文件后,将该文件发送给客户端 B。
我的代码用于读取然后发送文件:
CFile f;
BOOL p=f.Open(fname,CFile::modeRead);
char buff[1024];
int y;
int x;
if(!p)
//print error msg
while(true)
{
y=f.Read(buff,1024);
x=send(s,buff,y,0);
if(y<1024)
{
f.Close();
break;
}
}
send(s, "SENT|",6,0);
我的代码用于接收然后写入文件:
f.Open(fname,CFile::modeCreate | CFile::modeWrite);
while(true)
{
z=recv(sRecSocket,buff,512,0);
if(z==SOCKET_ERROR)
{
break;
}
if(strncmp(buff,"SENT|",5)==0)
break;
f.Write(buff,z);
}
f.Close();
send(sRecSocket,"RECV|",6,0);
但是当我运行我的项目时,有时它运行良好,文件完全发送到客户端 B,但有时没有,文件发送到客户端 B,但大小为 0 字节或小于文件的实际大小。有人可以告诉我原因吗?(我英语不好,谢谢你试图理解我在说什么)