接受信息:客户端:
Private Sub Command1_Click()
winsock1.Protocol = sckTCPProtocol
Winsock1.RemoteHost = "zhang"
Winsock1.RemotePort = 1002
Winsock1.Connect
Winsock1.SendData Text1.Text
End Sub
服务器端(计算机名:zhang):
Private Sub Form_Load()
Winsock1.Protocol = sckTCPProtocol
winsock1.localport=1002
Winsock1.Listen
End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Accept requestID
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData text1, vbString
End Sub我首先运行服务器端,再运行客户端,点command1。
运行后在客户端出现错误,并提示:
run-time error '40006'
wrong protocol or connection state for the requested
transaction or request
同时在服务器端出现错误对话框!
Private Sub Command1_Click()
winsock1.Protocol = sckTCPProtocol
Winsock1.RemoteHost = "zhang"
Winsock1.RemotePort = 1002
Winsock1.Connect
Winsock1.SendData Text1.Text
End Sub
服务器端(计算机名:zhang):
Private Sub Form_Load()
Winsock1.Protocol = sckTCPProtocol
winsock1.localport=1002
Winsock1.Listen
End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Accept requestID
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData text1, vbString
End Sub我首先运行服务器端,再运行客户端,点command1。
运行后在客户端出现错误,并提示:
run-time error '40006'
wrong protocol or connection state for the requested
transaction or request
同时在服务器端出现错误对话框!
Private Sub Command1_Click()
Dim Start As Single
winsock1.Protocol = sckTCPProtocol
Winsock1.RemoteHost = "zhang"
Winsock1.RemotePort = 1002
Winsock1.Connect
Start = Timer
Do While Timer < Start + 2'延迟一下,让WINSOCK有时候连接
DoEvents
Loop
Winsock1.SendData Text1.Text
End Sub
客户端:
Private Sub Command1_Click() '连接
winsock1.Protocol = sckTCPProtocol
Winsock1.RemoteHost = "zhang"
Winsock1.RemotePort = 1002
Winsock1.Connect
End Sub
Private Sub Command2_Click() '发送数据
Winsock1.SendData Text1.Text
End Sub
我也试了本机调试,效果一样!
按你说的做后
点完command1后
在服务器端出现错误对话框!
run-time error '40020'
invalid operation as curent state
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
End Sub
还是不好使:(
正确的做法是加载一个winsock控件 来 accept 请求先把Winsock1 的 index 属性设置为0
Private Sub Winsock1_ConnectionRequest(index as integer ByVal requestID As Long)
'先查找有没有关闭的winsock
dim bFind as boolean,nIndex as integer,nCount as integer
nCount= Winsock1.count
for i=0 to nCount-1
if Winsock1(i).state=sckclosed then
bFind =true
nIndex =i
end if
next
'如果没有找到加载一个
if not bFind then
load winsock1(nCount)
nindex =nCount
end if
Winsock1(nindex).Accept requestID'接受请求
End Sub
if Winsock1(i).state=sckclosed then
bFind =true
nIndex =i
exit for '对不起 这里少了一个exit for 一时忘了
end if
next
Winsock1.GetData text1, vbString
winsock1.senddata text1
这样的语句text1改成变量发送接受就好了!
如果用text1,后面的参数应该用的设置!
还是有感谢大家的帮助!!!!!!!!!
Private Sub Command1_Click()
Dim Start As Single
winsock1.Protocol = sckTCPProtocol
Winsock1.RemoteHost = "zhang"
Winsock1.RemotePort = 1002
Winsock1.Connect
Start = Timer
Do While Timer < Start + 2 And Winsock1.State <> 7 '延迟一下,让WINSOCK有时候连接
DoEvents
Loop
If Winsock1.State <> 7 Then
MsgBox "Connection Failed!"
Exit Sub
End If
Winsock1.SendData Text1.Text
End Sub Winsock1.SendData Text1.Text