我的服务器会不停的轮播这些文件。根据网友Lightest(一闪而过)说的:
1.将文件按照块编号(例如1k字节为1块).
2.发送方从头开始发送数据,每次发送一个块,并标明块号.连续发送,直到发送到文件结束.
3.接收方将接收到的块写入文件对应的块中.并检查当前接收的数据块号,如果在这个块号之前有漏掉的,且已经超时若干秒(例如3秒)未接收到的块.如果有,就把这个块号回复给接收方.
4.发送方重发接收方回复的漏掉的块.
现在的问题就是,要做一个结构体,包头里包括了当前发送的块的顺序号,甚至包括文件大小,文件名称等等,这样在接收端可以控制包的丢失。这个结构体(或者说协议)要怎么写?socket怎么发送这个?
循环接收文件的时候要怎么处理。我是菜鸟级的,请赐教,有源代码就更好了,谢谢。 [email protected]
iBufSize = myFile.Read(pBuf, iBufSize)
m_Socket.SendTo(pBuf, iBufSize)是定义好结构,还是在第二句读文件之前,给pBuf的前面几个赋值,后面跟文件内容?
DWORD dwPackID;//包的序号
DWORD dwPackCount;//包的总数
BYTE pData[1000];//数据
DWORD dwFileSize;//文件名
BYTE strFileName[MAX_FILE_NAME_LEN];//文件名
}CSocket sock;
...
FILE_PACKET_T pack1;
sock.Send(&pack1, sizeof(FILE_PACKET_T));