关于使用CSocket进行文件传输的问题
本人需要些一个是文件传输的程序,我已经用CSocket实现了单个文件的传播,就是在服务器端选择一个文件,然后点击发送,客户端就会收到这个文件。现在的问题是我在服务端点击文件发送后,客户端能够收到文件,但是总会包一个内存不足的错误我的基本实现原理是在server:
...
for(int i=0;i<=myFileLength;i+=1024)
sockRecv.Send(data+i,1024); //Send the whole thing now
if(myFileLength%1024!=0)
sockRecv.Send(data+myFileLength-myFileLength%1024,myFileLength%1024);
...
client:接收函数主要代码
Receive(){
...
for(int i=0;i<=dataLength;i+=1024)
sockClient.Receive(data+i,1024); //Send the whole thing now
if(dataLength%1024!=0)
sockClient.Receive(data+dataLength-dataLength%1024,dataLength%1024);
...
}
在客户端用了一个网络事件侦听客户端的动作
WSAAsyncSelect(ServerSocket,m_hWnd,WM_CLIENT_READCOLOSE,FD_READ|FD_CLOSE);
当服务器端send 的时候客户端就被通知然后调用接收函数,我有点怀疑是不是在server端的文件循环中每send一次,都会触发客户端的侦听函数调用一次接收函数Receive();还有,我需要server端向client端传送数据与命令,不知如何再send和receive中区分开来,请高手指教
网上的一些程序例子都是只说了怎么样传一个文件,我如果要一次传送多个文件该怎么办呢