CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

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

楼主cdwps(萧宇)2005-03-02 12:57:34 在 VB / 基础类 提问

各位高手帮帮忙!  
  UDP发送16进制,代码应该怎么写?  
  问题点数:0、回复次数:13Top

1 楼SupermanKing(人类)回复于 2005-03-02 13:04:44 得分 0

发16进制,是如“FF1B2F”这样的东西吗?就是以字符串处理方式就行了。  
  如果要转换回十进制数就这样转换:  
  BB="FF1B2F"  
  Msgbox   Int("&H"   &   BB)Top

2 楼lyllxfly(Iamunknown)回复于 2005-03-02 13:06:52 得分 0

不管发送什么,最终都要转换成字节数组。  
  你的16进制是什么?二进制还是字符?Top

3 楼cdwps(萧宇)回复于 2005-03-02 13:15:39 得分 0

字符。  
  因该怎么写呢?  
  怎么转换成字节数组?Top

4 楼lyllxfly(Iamunknown)回复于 2005-03-02 13:34:31 得分 0

dim   b()   as   byte  
  dim   s   as   string  
   
  s="ABC然"  
  b=s  
   
  b-->0~UBound(b)Top

5 楼cdwps(萧宇)回复于 2005-03-02 13:52:30 得分 0

我的代码如下:  
  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  
  请帮帮忙!Top

6 楼cdwps(萧宇)回复于 2005-03-02 14:34:25 得分 0

帮帮忙!!!!!Top

7 楼XunBaian(蓝水晶)回复于 2005-03-02 15:04:39 得分 0

改Dim   us()为:Dim   us()   As   Byte  
   
  Call   Me.Winsock1.SendData(us)  
  或  
  Me.winsock1.SendData   usTop

8 楼XunBaian(蓝水晶)回复于 2005-03-02 15:06:07 得分 0

Private   Function   sendmessage(ByVal   senmess   As   String)   As   String  
        Dim   us()   As   Byte  
        us   =   senmess  
        Call   Me.Winsock1.SendData(us)           包你不再错!  
  End   Function  
  Top

9 楼cdwps(萧宇)回复于 2005-03-02 15:30:29 得分 0

但是我的值是16进制的,在付给数组的时候,出现了一个“A”就报错了!Top

10 楼lyllxfly(Iamunknown)回复于 2005-03-02 16:12:14 得分 0

真正使用、处理、计算时,必须转换成机器数。十进制、十六进制是形式。  
  整数-->二进制补码;  
  Single-->Ieee32浮点数;  
  Double-->Ieee64浮点数;  
  ...  
  Top

11 楼lyllxfly(Iamunknown)回复于 2005-03-02 16:15:19 得分 0

其实VB   Winsock也可直接发送字符串,只是接收应作相应改变!Top

12 楼SupermanKing(人类)回复于 2005-03-02 23:26:50 得分 0

在网络传输数据时哪会有那么多问题呢?  
  无论你发送的是字符串或是字节数组都是一样的,就是写清楚变量名就搞定了。  
  你所写的函数说明你原来有拥有字符串变量,你直接发不就可以了吗?为什么  
  还要做成字节数组在传送?  
  以下是你的代码:  
  =============================================  
                                                                      '这里原来是字符串  
  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”会是一样的结果吗?当然,因为你的数据原来就是字  
  '符串这种情况可能不会发生,因为字符串里也存不了那种东西,但是我还是  
  '认为你欠缺考虑。如果你真的想对数据进行加密,你还是好好找点资料学一  
  '学比较好。Top

13 楼XunBaian(蓝水晶)回复于 2005-03-03 08:19:45 得分 0

在你原有代码上修改如下,错不了的:  
   
  改  
  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数组。Top

相关问题

  • 求:UDP 通过socks5代理的代码
  • 求UDP完成端口模型代码!
  • 高分求UDP通信的vxworks代码
  • 怎么用代码写Email发送?
  • 文件发送,请帖出源代码!
  • 发送EMAIL问题,看如下代码:
  • 求自动发送邮件的代码!
  • 软件测试——发送源代码!
  • 数据发送错误代码10004
  • 100分求救对mscomm控件通信发送16进制接收16进制数据的代码,谢谢!

关键词

  • 函数
  • winsock
  • 代码
  • 转换
  • 字符
  • 数据
  • me
  • senmess
  • 字符串
  • senddata

得分解答快速导航

  • 帖主:cdwps

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo