服务器:
Option Explicit
Public Type aa
dd As String * 2
ee As String * 3
End TypePublic ff As aaPrivate Sub Form_Load()
Winsock1.Protocol = sckTCPProtocol
Winsock1.LocalPort = "2000"
Winsock1.Listen
FrmCli.Show
End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> 0 Then Winsock1.Close
Winsock1.Accept requestID
End SubPrivate Sub Command1_Click()
Dim a() As Byte
Dim ss As String * 3
ss = "ABC" ‘如果把下面的ff.ee改为ss的话,在客户端也是乱码
ff.dd = "EF"
ff.ee = "abc"
ReDim a(2) As Byte
Call CopyMemory(a(0), ff.ee, 3)
Winsock1.SendData a
End Sub
*******************************************************************************
客户端:
Private Sub Command1_Click()
If Winsock1.State <> 0 Then Winsock1.Close
Winsock1.Connect
End SubPrivate Sub Form_Load()
With Winsock1
.Protocol = sckTCPProtocol
.RemoteHost = "192.168.0.69"
.RemotePort = 2000
End With
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim str As String
Dim GetStr() As Byte
ReDim GetStr(bytesTotal - 1) As Byte
Winsock1.GetData GetStr, vbArray & vbByte, bytesTotal
str = Chr(GetStr(0)) & Chr(GetStr(1)) & Chr(GetStr(2))
MsgBox str
End Sub这样也不知道为什么,就是str乱码,我都不晓得是怎么会事!麻烦你指点指点,因为这个原因我的程序做起来很是麻烦,代码好多了!
如果我只传递ff.ee= “abc”的话,我需要这样在定义一个数据类型
Public Type ReType
Ree As String * 3
End Type
Public ReFF As ReType然后再使用
ReFF.Ree = ff.ee
Call CopyMemory(a(0), ReFF, 3)
Winsock1.SendData a
这样的话解手到的数据就是 :
Winsock1.GetData GetStr, vbArray & vbByte, bytesTotal
str = Chr(GetStr(0)) & Chr(GetStr(1)) & Chr(GetStr(2))
MsgBox str
Str = “abc”
还希望高手指点指点呀!!我的油香地址是[email protected]
MSN: [email protected]
Option Explicit
Public Type aa
dd As String * 2
ee As String * 3
End TypePublic ff As aaPrivate Sub Form_Load()
Winsock1.Protocol = sckTCPProtocol
Winsock1.LocalPort = "2000"
Winsock1.Listen
FrmCli.Show
End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> 0 Then Winsock1.Close
Winsock1.Accept requestID
End SubPrivate Sub Command1_Click()
Dim a() As Byte
Dim ss As String * 3
ss = "ABC" ‘如果把下面的ff.ee改为ss的话,在客户端也是乱码
ff.dd = "EF"
ff.ee = "abc"
ReDim a(2) As Byte
Call CopyMemory(a(0), ff.ee, 3)
Winsock1.SendData a
End Sub
*******************************************************************************
客户端:
Private Sub Command1_Click()
If Winsock1.State <> 0 Then Winsock1.Close
Winsock1.Connect
End SubPrivate Sub Form_Load()
With Winsock1
.Protocol = sckTCPProtocol
.RemoteHost = "192.168.0.69"
.RemotePort = 2000
End With
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim str As String
Dim GetStr() As Byte
ReDim GetStr(bytesTotal - 1) As Byte
Winsock1.GetData GetStr, vbArray & vbByte, bytesTotal
str = Chr(GetStr(0)) & Chr(GetStr(1)) & Chr(GetStr(2))
MsgBox str
End Sub这样也不知道为什么,就是str乱码,我都不晓得是怎么会事!麻烦你指点指点,因为这个原因我的程序做起来很是麻烦,代码好多了!
如果我只传递ff.ee= “abc”的话,我需要这样在定义一个数据类型
Public Type ReType
Ree As String * 3
End Type
Public ReFF As ReType然后再使用
ReFF.Ree = ff.ee
Call CopyMemory(a(0), ReFF, 3)
Winsock1.SendData a
这样的话解手到的数据就是 :
Winsock1.GetData GetStr, vbArray & vbByte, bytesTotal
str = Chr(GetStr(0)) & Chr(GetStr(1)) & Chr(GetStr(2))
MsgBox str
Str = “abc”
还希望高手指点指点呀!!我的油香地址是[email protected]
MSN: [email protected]
这样看看
string类型是占2位的
Winsock1.SendData ff.ee
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim str1 As String
str1 = ""
Winsock1.GetData str1, , bytesTotal
MsgBox str1
End Sub
要把5001做为2位发送,不用copymemory怎么也不可以实现,不是么?
好啦不讨论了,也不耽误大家宝贵时间了,我结贴了哦!
要用lenb()