1、 为什么在客户端我发出去之后怎么会在dataarrival中收到1个字节,然后就报错2\ 在服务端的dll我该怎么用呢 就set mfrmWinsock= nothing 吗 有例子吗 谢谢'客户端DLL中接口类(记得加个窗体frmWinsock,窗体上加个控件Winsock1)
Private WithEvents mobjWinsock As Winsock
Private mfrmWinsock As frmWinsockPrivate Sub Class_Initialize()
Set mfrmWinsock = New frmWinsock
Load mfrmWinsock
Set mobjWinsock = mfrmWinsock.Winsock1
mobjWinsock.Protocol = sckUDPProtocol
mobjWinsock.RemoteHost = "192.168.0.32"
mobjWinsock.Bind 1002 mobjWinsock.RemotePort = 1000
' mobjWinsock.LocalPort = 1002 '这里是客户端端口,和服务器端的RemotePort必须一致
' mobjWinsock.RemoteHost = "服务器端计算机名"
' mobjWinsock.RemotePort = 1001 '这里是服务器端口
' If mobjWinsock.Protocol = sckTCPProtocol Then
' mobjWinsock.Connect
' ElseIf .Protocol = sckUDPProtocol Then
' mobjWinsock.Bind 1002
' End If
End SubPrivate Sub Class_Terminate()
Set mobjWinsock = Nothing
Unload mfrmWinsock
End Sub'一个公共方法
Public Sub SendData(ByVal vstrData As String)
' Dim arrbyt() As Byte
' arrbyt = StrConv(vstrData, vbFromUnicode)
mobjWinsock.SendData vstrData 'arrbyt
End Sub'接收
Private Sub mobjWinsock_DataArrival(ByVal bytesTotal As Long)
' Dim arrbyt() As Byte
' Dim strData As String
mobjWinsock.GetData strData 'arrbyt, vbArray + vbByte
'' strData = StrConv(arrbyt, vbUnicode) '这里接收到的字符串
Debug.Print strData '将收到的字串打印到立即窗口
'End Sub在frmmfrmWinsock中:
Dim aa As New Class1Private Sub Command1_Click()
Dim ddd As String
ddd = "aaaa"
aa.SendData ddd
End Sub'服务器端
Private WithEvents mobjWinsock As Winsock
Private mfrmWinsock As frmWinsockPrivate Sub Class_Initialize()
Set mfrmWinsock = New frmWinsock
Load mfrmWinsock
Set mobjWinsock = mfrmWinsock.Winsock1
mobjWinsock.Protocol = sckUDPProtocol
' mobjWinsock.RemoteHost = "192.168.0.29"
' mobjWinsock.RemotePort = 2000
mobjWinsock.Bind 1000
' mobjWinsock.LocalPort = 1001 '这里是服务器端口,和客户端的RemotePort必须一致
' mobjWinsock.RemoteHost = "客户端计算机名"
' mobjWinsock.RemotePort = 1002 '这里是客户端口
'
' If mobjWinsock.Protocol = sckTCPProtocol Then
' mobjWinsock.Listen
' ElseIf mobjWinsock.Protocol = sckUDPProtocol Then
' mobjWinsock.Bind 1001 '这里是服务器端口,和客户端的RemotePort必须一致
' End If
End SubPrivate Sub Class_Terminate()
Set mobjWinsock = Nothing
Unload mfrmWinsock
End Sub'Private Sub mobjWinsock_ConnectionRequest(ByVal requestID As Long)
'
' If mobjWinsock.Protocol = sckTCPProtocol Then
' If mobjWinsock.State <> sckClosed Then
' mobjWinsock.Close
' End If
' mobjWinsock.Accept requestID
'
' ElseIf mobjWinsock.Protocol = sckUDPProtocol Then
' End If
'End Sub'一个公共方法
Public Sub SendData(ByVal vstrData As String)
Dim arrbyt() As Byte
arrbyt = StrConv(vstrData, vbFromUnicode)
mobjWinsock.SendData arrbyt
End Sub'接收
Private Sub mobjWinsock_DataArrival(ByVal bytesTotal As Long)
Dim arrbyt() As Byte
Dim strData As String
mobjWinsock.GetData arrbyt, vbArray + vbByte
strData = StrConv(arrbyt, vbUnicode) '这里接收到的字符串
Debug.Print strData '将收到的字串打印到立即窗口
End Sub
Private WithEvents mobjWinsock As Winsock
Private mfrmWinsock As frmWinsockPrivate Sub Class_Initialize()
Set mfrmWinsock = New frmWinsock
Load mfrmWinsock
Set mobjWinsock = mfrmWinsock.Winsock1
mobjWinsock.Protocol = sckUDPProtocol
mobjWinsock.RemoteHost = "192.168.0.32"
mobjWinsock.Bind 1002 mobjWinsock.RemotePort = 1000
' mobjWinsock.LocalPort = 1002 '这里是客户端端口,和服务器端的RemotePort必须一致
' mobjWinsock.RemoteHost = "服务器端计算机名"
' mobjWinsock.RemotePort = 1001 '这里是服务器端口
' If mobjWinsock.Protocol = sckTCPProtocol Then
' mobjWinsock.Connect
' ElseIf .Protocol = sckUDPProtocol Then
' mobjWinsock.Bind 1002
' End If
End SubPrivate Sub Class_Terminate()
Set mobjWinsock = Nothing
Unload mfrmWinsock
End Sub'一个公共方法
Public Sub SendData(ByVal vstrData As String)
' Dim arrbyt() As Byte
' arrbyt = StrConv(vstrData, vbFromUnicode)
mobjWinsock.SendData vstrData 'arrbyt
End Sub'接收
Private Sub mobjWinsock_DataArrival(ByVal bytesTotal As Long)
' Dim arrbyt() As Byte
' Dim strData As String
mobjWinsock.GetData strData 'arrbyt, vbArray + vbByte
'' strData = StrConv(arrbyt, vbUnicode) '这里接收到的字符串
Debug.Print strData '将收到的字串打印到立即窗口
'End Sub在frmmfrmWinsock中:
Dim aa As New Class1Private Sub Command1_Click()
Dim ddd As String
ddd = "aaaa"
aa.SendData ddd
End Sub'服务器端
Private WithEvents mobjWinsock As Winsock
Private mfrmWinsock As frmWinsockPrivate Sub Class_Initialize()
Set mfrmWinsock = New frmWinsock
Load mfrmWinsock
Set mobjWinsock = mfrmWinsock.Winsock1
mobjWinsock.Protocol = sckUDPProtocol
' mobjWinsock.RemoteHost = "192.168.0.29"
' mobjWinsock.RemotePort = 2000
mobjWinsock.Bind 1000
' mobjWinsock.LocalPort = 1001 '这里是服务器端口,和客户端的RemotePort必须一致
' mobjWinsock.RemoteHost = "客户端计算机名"
' mobjWinsock.RemotePort = 1002 '这里是客户端口
'
' If mobjWinsock.Protocol = sckTCPProtocol Then
' mobjWinsock.Listen
' ElseIf mobjWinsock.Protocol = sckUDPProtocol Then
' mobjWinsock.Bind 1001 '这里是服务器端口,和客户端的RemotePort必须一致
' End If
End SubPrivate Sub Class_Terminate()
Set mobjWinsock = Nothing
Unload mfrmWinsock
End Sub'Private Sub mobjWinsock_ConnectionRequest(ByVal requestID As Long)
'
' If mobjWinsock.Protocol = sckTCPProtocol Then
' If mobjWinsock.State <> sckClosed Then
' mobjWinsock.Close
' End If
' mobjWinsock.Accept requestID
'
' ElseIf mobjWinsock.Protocol = sckUDPProtocol Then
' End If
'End Sub'一个公共方法
Public Sub SendData(ByVal vstrData As String)
Dim arrbyt() As Byte
arrbyt = StrConv(vstrData, vbFromUnicode)
mobjWinsock.SendData arrbyt
End Sub'接收
Private Sub mobjWinsock_DataArrival(ByVal bytesTotal As Long)
Dim arrbyt() As Byte
Dim strData As String
mobjWinsock.GetData arrbyt, vbArray + vbByte
strData = StrConv(arrbyt, vbUnicode) '这里接收到的字符串
Debug.Print strData '将收到的字串打印到立即窗口
End Sub
我不明白你的意思 我在工程里能加入winsock 阿 你的意思能说清楚点吗
data = String(bytesTotal + 2, Chr$(10))
g.GetData data, , bytesTotal