UDP发送16进制,代码应该怎么写?

cdwps 2005-03-02 12:57:34
各位高手帮帮忙!
UDP发送16进制,代码应该怎么写?
...全文
778 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
XunBaian 2005-03-03
  • 打赏
  • 举报
回复
在你原有代码上修改如下,错不了的:


Dim us()
为:
Dim us() As Byte


Me.Winsock1.SendData (us())
为:
Call Me.Winsock1.SendData(us)

Me.winsock1.SendData us

另:
Dim byt() As Byte
Dim str As String
str="字符串"
byt=str
则byt数组各元素为str的对应ASCII码值。你可用在此加断点查看。
因Sock的传输其实是按字节传输,建议收发都用Byte数组。
现在还是人类 2005-03-02
  • 打赏
  • 举报
回复
在网络传输数据时哪会有那么多问题呢?
无论你发送的是字符串或是字节数组都是一样的,就是写清楚变量名就搞定了。
你所写的函数说明你原来有拥有字符串变量,你直接发不就可以了吗?为什么
还要做成字节数组在传送?
以下是你的代码:
=============================================
'这里原来是字符串
Private Function sendmessage(ByVal senmess As String) As String
Dim us()
Dim i
ReDim us(iii)
'这里却把字符串转换成16进制字符,还是变体类型不是字节类型或字符类型。
For i = 0 To Len(senmess)
Label1.Caption = LBound(us)
us(i) = Hex(Asc(Mid(senmess, i + 1, 1)))
Next i
'这里才发送,还写错了。正确的写法是: Winsock1.SendData us
Call Winsock1.SendData( us )
'不用在数组后加入括号“()”,而且函数或方法在使用是只有三种格式
'1:函数 参数,...
'2:Call 函数(参数,...)
'3:变量=函数(参数,...) 或 表达式<>函数(参数,...) ...
Me.Winsock1.SendData (us()) 这一句老是报错!
End Function
==================================================
如果对于我来说我会这样做:
'直接把字符串发出去,接收时直接用字符串变量接收就行了。
'哪还用得着转来转去的。
Winsock1.SendData senmess

'还有,如果你是从数据安全角度去转换成十六进制字符串来传送的话,建议
'你还是直接发还好,因为你既没有加密也没有更改进制表示符,这根本就不
'可能安全。而且你还没有考虑到数据位数的问题。比如说“FA0B0E”,按你
'的处理方法可能得出来的是“FABE”,更本没有注意到你可能会用HEX返回的
'可能是 B 不是 0B ,如果你每个字节一两个十六进制解码,你看看解释
'“FABE”和“FA0B0E”会是一样的结果吗?当然,因为你的数据原来就是字
'符串这种情况可能不会发生,因为字符串里也存不了那种东西,但是我还是
'认为你欠缺考虑。如果你真的想对数据进行加密,你还是好好找点资料学一
'学比较好。
lyllxfly 2005-03-02
  • 打赏
  • 举报
回复
其实VB Winsock也可直接发送字符串,只是接收应作相应改变!
lyllxfly 2005-03-02
  • 打赏
  • 举报
回复
真正使用、处理、计算时,必须转换成机器数。十进制、十六进制是形式。
整数-->二进制补码;
Single-->Ieee32浮点数;
Double-->Ieee64浮点数;
...
cdwps 2005-03-02
  • 打赏
  • 举报
回复
但是我的值是16进制的,在付给数组的时候,出现了一个“A”就报错了!
XunBaian 2005-03-02
  • 打赏
  • 举报
回复
Private Function sendmessage(ByVal senmess As String) As String
Dim us() As Byte
us = senmess
Call Me.Winsock1.SendData(us) 包你不再错!
End Function
XunBaian 2005-03-02
  • 打赏
  • 举报
回复
改Dim us()为:Dim us() As Byte

Call Me.Winsock1.SendData(us)

Me.winsock1.SendData us
cdwps 2005-03-02
  • 打赏
  • 举报
回复
帮帮忙!!!!!
cdwps 2005-03-02
  • 打赏
  • 举报
回复
我的代码如下:
Private Function sendmessage(ByVal senmess As String) As String
Dim us()
Dim i
ReDim us(iii)
For i = 0 To Len(senmess)
Label1.Caption = LBound(us)
us(i) = Hex(Asc(Mid(senmess, i + 1, 1)))
Next i
Me.Winsock1.SendData (us()) 这一句老是报错!
End Function
请帮帮忙!
lyllxfly 2005-03-02
  • 打赏
  • 举报
回复
dim b() as byte
dim s as string

s="ABC然"
b=s

b-->0~UBound(b)
cdwps 2005-03-02
  • 打赏
  • 举报
回复
字符。
因该怎么写呢?
怎么转换成字节数组?
lyllxfly 2005-03-02
  • 打赏
  • 举报
回复
不管发送什么,最终都要转换成字节数组。
你的16进制是什么?二进制还是字符?
现在还是人类 2005-03-02
  • 打赏
  • 举报
回复
发16进制,是如“FF1B2F”这样的东西吗?就是以字符串处理方式就行了。
如果要转换回十进制数就这样转换:
BB="FF1B2F"
Msgbox Int("&H" & BB)

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧