50分急求!! TCP下在同一次事件触发中不能发生两次winsock.senddata事件~~~~~UDP可以!~Private Sub Command1_Click()
Winsock1.SendData "aaaaa"
Winsock1.SendData aryContent 'aryContent为二进制数组,存储图片,小于8K!
End Sub
aryContent不能传过来!~~!或者传输不全!~
UDP下可以!~望各位朋友帮帮忙忙~~谢谢~~~谢谢~~~
Winsock1.SendData "aaaaa"
Winsock1.SendData aryContent 'aryContent为二进制数组,存储图片,小于8K!
End Sub
aryContent不能传过来!~~!或者传输不全!~
UDP下可以!~望各位朋友帮帮忙忙~~谢谢~~~谢谢~~~
如果我把上两句写在两件事件里面到是可以传输~~
P:上面说的 (aryContent不能传过来!~~!或者传输不全!~
UDP下可以!~) 有点不对!~可以传输完全~只是就是打不开!~~~
doevents
Winsock1.SendData aryContent 'aryContent为二进制数组,存储图片,小于8K!
但现在我用语句
Image1.Picture = LoadPicture("out.jpg")
打开传输过来的图片却说"对象错误"
谢谢拉~~(又是我,没分拉,换了个号~呵呵)
我把程序改为了你说的
Winsock1.SendData "aaaaa"
doevents
Winsock1.SendData aryContent 'aryContent为二进制数组,存储图片,小于8K!
图片可以传到拉~用看图工具也可以打开拉~
但是我用
Image1.Picture = LoadPicture("out.jpg") '图片传输前我已经转为jpg了~
语句打开时,确出错了~ --"对象错误" 或者"图片无效"我的接收语句为:
if falg=0 then 'falg 为一个标志~用于判断接字符,还是二进制数组
Winsock1.GetData data, vbString 'falg=0 接字符
falg=1 '将falg=1 ,准备为接二进制数组
else
if falg=1 then 'falg=1 ,接二进制数组
Winsock1.GetData temp, vbByte
Open "out.jpg" For Binary As #f
Put #f, , temp
Close #f
tfalg = 0
end if
END if是不是我的接收语句出错了~~但在UDP下可以用~~
请麻烦帮我解决一下~~急人啊~~
谢谢拉~~谢谢拉~~谢谢拉~~
if falg=0 then 'falg 为一个标志~用于判断接字符,还是二进制数组
Winsock1.GetData data, vbString 'falg=0 接字符
falg=1 '将falg=1 ,准备为接二进制数组
else
if falg=1 then 'falg=1 ,接二进制数组
Winsock1.GetData temp, vbByte
dim f as long
f=freefile
Open "out.jpg" For Binary As #f
Put #f, , temp
Close #f
tfalg = 0
end if
END if
崩溃啊~~~~句柄我也换拉~~
反正拿VB的image和Picture控件他就是死活不打开~~!!!!!
"图片无效"!~其他任何方法都可以打开~~(直接打开,delphi等都可以)~~!真是见鬼拉~~~大家以前需要在TCP下连续两次发送和接受两次不同类型的数据只怎么做的~~谢谢拉~~
LoadPicture("e:\out.jpg")
不知道是不是这个原因~
谢谢~
不知道是不是这个原因~
谢谢~急啊~
Dim temp() As ByteIf falg = 0 Then 'falg是个全局变量,在Form_Load()时已经赋值为0
Winsock1.GetData data, vbString
Text1.Text = data
falg = 1ElseIf falg = 1 Then
ReDim temp(bytesTotal)
Dim f As String
f = FreeFile
Winsock1.GetData temp, vbByte
Open "out.jpg" For Binary As #f
Put #f, , temp
Close #f
tfalg = 0
End IfEnd If
发送端:Dim aryContent() As Byte
Dim f As String
f = FreeFile
Dim i As Long
i = 0
Dim strFileName1 As String
strFileName1 = "in.jpg"
Open strFileName1 For Binary As #f
filesize = LOF(1)
ReDim aryContent(filesize) Do While Not EOF(1)
Get #f, , aryContent(i)
i = i + 1
Loop
Close #f
Winsock1.SendData Text1.Text
DoEvents
Winsock1.SendData aryContent
'如果把两次SendData放在两次事件触发下就可顺利传输~
但我是奇怪~为什么把两次SendData放在两次事件触发下就可顺利传输~如果图片转换上有问题的话,应该也不行才队~
if data=first then
Winsock1.SendData Text1.Text
else
if data=second then
Winsock1.SendData aryContent
end if
end if然后由 接收端 发出控制信息(按顺序分两次发出first和second),来触发 发送端 的不同的SendData事件,还是不行~~按说也是两次触发了 发送端 的winsock1.Dataarive事件!和把两句发送语句放在两个Command控件下触发应该是一样的~可还是不能发送~
就算写成
.
.
.
winsock1.senddata text1.text
Call Command1_Click
.然后
Private Sub Command_Click()
Winsock1.SendData aryContent
End Sub也不行~
就算我在 接收端 发出控制信息
呵呵
没用过两个winsock同时用tcp协议的~
我写为,
服务器端:
Private Sub Form_Load()
Winsock1.LocalPort = 1001
Winsock1.Listen
Winsock2.LocalPort = 1002
Winsock2.Listen
End Sub客户端为:
Private Sub Command1_Click()
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = 1001
Winsock1.Connect
Winsock2.RemoteHost = "127.0.0.1"
Winsock2.RemotePort = 1002
Winsock2.Connect
End Sub却连不上!
是不是tcp是点对点的~一个IP只能同时连接一个端口~用另外一个时要把上一个断开~谢谢~
呵呵
没用过两个winsock同时用tcp协议的~
我写为,
服务器端:
Private Sub Form_Load()
Winsock1.LocalPort = 1001
Winsock1.Listen
Winsock2.LocalPort = 1002
Winsock2.Listen
End Sub客户端为:
Private Sub Command1_Click()
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = 1001
Winsock1.Connect
Winsock2.RemoteHost = "127.0.0.1"
Winsock2.RemotePort = 1002
Winsock2.Connect
End Sub却连不上!
是不是tcp是点对点的~一个IP只能同时连接一个端口~用另外一个时要把上一个断开~谢谢~
winsock_connect 他是在winsock连接成功时触发 连接不成功就不会触发,有可能是连接不成功造成的,你看看触不触发
呵呵
只是我初学~不是很看得懂~~(p:你的文章中的发送端是用控件数组,那这个数组有多长呢~还是由传输的文件大小决定的~每个winsock(i)只传一次~,怎么我一直都只能看到winsock(0))
原贴内容:
可以连多个阿,你写的没问题啊,我用了两个winsock,但还是要放在两个事件下连接~~
发送也是~~呵呵 无奈啊~我现在正在看你以前的文章~想象你一样用DataArrival事件来做~~(我简直怀疑市布是我装的VB出问题拉~呵呵)谢谢拉~
我现在学到的都是在测试和实践中总结的,有问题不怕,关键是解决问题和分析问题