cc++ winsock 如何发送和接收图片bmp格式文件

cc++ winsock 如何发送和接收图片bmp格式文件,第1张

我以C语言的办法来简单描述下

客户端:

1。发送连接申请到服务端

2。使用fopen打开要发送的BMP文件

3。使用fread函数读取数据存入变量中

4。使用函数send来将变量中内容发送到服务端

服务端:

1。接受客户端连接申请

2。使用fopen函数创建一个BMP文件

3。使用函数recv来接收传送过来的数据存入变量中

4。使用fread函数将变量中的数据写入刚刚创建的BMP文件中

差别大了。dll是activex dll就好比是一个动态dll文件。如果不设置不能访问函数。改了可以。activex控件是用户控件。自己做控件。然后加载就可以独立运行。不需要外部。winsock需要这个msock.ocx忘记名字了。需要这个控件。否则别人不能使用。左边的那些都是基本控件。都不需要带。。webbrowser也不需要带。

winsock。。

流程。。。。

接受getdate

发送senddate

5分就这么多了。

vb的Winsock是使用异步传输的,也就是说你的发送端For i = 1 To s(s为数据总数)

Winsock1.SendData s(i)

Next i看似是分开S次发送了,但可能VB会合并成一次性发完;又或者你某个s数组里的内容太长,VB又会将它分开几次传输。所以在传输前要先做好每个数据段的控制,通常的做法就是在每次发送数据前先发送数据的长度给接收端,然后再发送数据。你的发送端可改为如下:For i = 1 To s(s为数据总数)

Winsock1.SendData len(s(i)) &chr(0) &s(i) '先发送数据长度,中间使用chr(0)分隔,接收时反处理就是了

Next 接收端代码:先定义一个全局变量s,用来保存你接收到的数据,dim sPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim l,k,strLen As DoubleDim s1 as String

Winsock1.GetData s1,vbstrings=s &s1k=instr(s,chr(0)) '分离长度控制数据 if k>0 then strLen=Left(s, InStr(s, Chr(0)) - 1) '得到本次接收数据的长度 if len(s)>strLen-len(strLen) then '是否接收合并足够的数据 s1=mid(s,len(strLen)+2,strLen).................s1就是这次接收到的完整数据,咋样处理s1你就看着办啦! s=mid(s,len(strLen)+2+strLen) '将本次的数据段从s里删除,继续处理下一段 end if end ifEnd Sub


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

原文地址: http://outofmemory.cn/tougao/8139330.html

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

发表评论

登录后才能评论

评论列表(0条)

保存