雪千渔Blog

  • 首页
  • Coding
    • dotNet
    • C++
    • Lua
    • Visual Basic
    • Java
    • Android
    • Web
  • DCC
    • Maya
    • Maya-Plug
    • AfterEffect
    • AfterEffect-Plug
    • PhotoShop-Plug
  • GameDev
    • Unity3D
    • UnrealEngine
    • 经验杂谈
    • 游戏设计
    • 自研引擎
    • 效果实现
  • Graphics
    • OpenGL
    • Vulkan
    • 计算机图形学
  • 其他
    • 乱七八糟
    • 软件工具
    • 留言板
    • 自制素材
    • 关于我
雪千渔blog
唯有热爱,能抵漫长岁月
  1. 首页
  2. Coding
  3. Visual Basic
  4. 正文

关于vb6使用socket发送通信类型和编码

2017年3月4日 7349点热度 70人点赞 0条评论

用过vb6的winsock控件(MSWINSCK.OCX)的都知道,只要一句Winsock1.Connect RemoteIP,RemotePort即可进行连接,使用Winsock1.Send Data即可发送数据,这个Data大部分都是以String发送的,编码为vb默认的unicode。但是在做一个通信项目时,采用前两个字节用来判断需要接收多少的字节,以防止数据粘合和分段发送。

这边使用的是VB6,服务端使用Java和C#还有辅助工具Sockit进行测试。

字节 Byte 的数据类型范围是从0~255之间 也就是2^8-1,通过发送字节数组进行传输。

vb默认的字符是unicode编码,所有unicode都是占两个长度包括英文和数字,所以用两个字节转换成一个unicode。

Option Explicit
Const yh As String = "Register'JomiXedYu'textpassword"
Dim getdatad As Byte

Private Sub Command1_Click()
    Winsock1.Connect "127.0.0.1", 7700
End Sub

Private Sub Command2_Click()
    '声明字节变量
    Dim ddd As Byte
    '把字符串从unicode转过来,然后在用LenB求字节长度
    ddd = LenB(StrConv(yh, vbFromUnicode))
    '因为这个长度肯定不能长所以只用了低字节,高字节填0,最后加上字符串发送出去
    Winsock1.SendData Chr(0) + Chr(ddd) + yh
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    '接收用字节数组变量
    Dim dd() As Byte

    Dim ff As String

    Winsock1.GetData dd
    
    Dim intt As Integer
    '取本次获取数据的除了前两个字节的其他字节
    intt = UBound(dd) - 2
    '定义数据字节数组并赋予大小
    Dim dff() As Byte
    ReDim dff(intt) As Byte
    
    Dim i As Integer
    '从接收字节数组中循环赋值给数据字节数组
    For i = 0 To UBound(dd) - 2
        dff(i) = dd(i + 2)
    Next i
    '将数据字节数组转换为unicode显示出来
    MsgBox StrConv(dff, vbUnicode)
    
End Sub


 

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: socket vb
最后更新:2017年3月4日

JomiXedYu

独游开发者 & 技术美术

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

JomiXedYu

独游开发者 & 技术美术

最新 热点 随机
最新 热点 随机
HLSL对Vulkan的适应性以及伪语义绑定 GPU呈现模式与垂直空白 自研引擎PulsarEngine的Shader编译流程 UE材质Custom节点与HLSL的HACK操作 UE5出现D3D12崩溃报错解决方案 游戏引擎脚本绑定的三种写法与利弊
HLSL对Vulkan的适应性以及伪语义绑定
修改UnityPlayer.dll的名字 C#之拓展方法的本质 自研引擎PulsarEngine的Shader编译流程 C++之偏特化继承实现类型的全退化 C#Winform使用CSkin制作VS2015风格界面 HSV与RGB互转公式与Color封装
友情链接
  • DorinXL
  • 小博博客
  • 秋橘斋

COPYRIGHT © 2014-2023 雪千渔Blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

辽ICP备20006894号-1