vc 通过tcp发送较大文件

vc 通过tcp发送较大文件,第1张

你还没了解文件存储的方便之处呢,你用个for循环多麻烦了,看看这个,

发送端:

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协议传诵,没问题了.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9965044.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存