
发送端:
int SendFileLength = 0//保存已经发送的文件的长度
while (SendFileLength <filelength)
{
file.Seek(SendFileLength,CFile::begin)
sockSenderror = send(SendFileSock,buffer,TempSendLength,0)
if(SOCKET_ERROR == sockSenderror)
{
closesocket(SendFileSock)
return 0
}
SendFileLength += TempSendLength
}
接收端:
int finish=0//保存receive函数的返回值
while(true)
{
finish = recv(ConnSock,buffer,BUFFERSIZE,0)//开始写入文件
if(SOCKET_ERROR == finish)
{
AfxMessageBox("接收文件错误!")
return 0
}
file.Write(buffer,finish)//自动就写到文件末尾了
}
你把这两段组织组织就行了,想发多大就发多大,剩下的交给你了。
真不行了再百度hi一下。
全部都是字符串 *** 作,字符串结尾必然有'\0',pdata中只能看到”#start#“是必然的,即使后面有数据,有 结束标记间隔,作为字符串也看不到其它。至于发送,没有更多代码,看不出其它问题。
用SOCKET发送图片数据,数据可以放在一个结构里,像这样一样#pragma pack(push,1)
typedef struct
{
short flags
int len
BYTE szBuffer[256]
}PICTURE,*PPICTURE
#pragma pack(pop)
发送这样的数据结构,接收方获得后可以判断flags.
可以设flags为1时是图片数据,len是数据长度
flags为2时表示数据发送完毕,
flags为0时表示请求图片数据,szBuffer为图片名........等等等等,
通过SOCKET的TCP协议传诵,没问题了.
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)