客户端:
1。发送连接申请到服务端
2。使用fopen打开要发送的BMP文件
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)