服务端往客户端发送没问题
客户端往服务端发送就出错但是服务端接收解析数据前加一句msgbox(bytesTotal)就不出问题.请问怎么办?下面是源代码
http://ufouser.b155.zgsj.com/vbnet_error.rar
http://ufouser.b155.zgsj.com/vbnet_ok.rar
客户端往服务端发送就出错但是服务端接收解析数据前加一句msgbox(bytesTotal)就不出问题.请问怎么办?下面是源代码
http://ufouser.b155.zgsj.com/vbnet_error.rar
http://ufouser.b155.zgsj.com/vbnet_ok.rar
解决方案 »
- VB如何远程连接和操作SQL SERVER2000数据库?
- 1至12月份平均数的问题,急急急!!!
- 关于 PeekMessage函数的问题
- 很着急~在线等~自定义控件的上一层也是自定义控件,请问这个自定义控件如何取到上一层自定义控件的控件~~
- 请教设置VB程序里设置WORD的宽度 , 分可以在加
- 救命啊,一天也没解决,高手快来啊。谢谢大家!
- 请问外部程序如何直接调用DLL的函数 (不用类对象调用),可以直接用 call MyFnt 调用?谢谢!
- 急急急急!~~vb中如何用txt生成测试后的结果并写入txt中
- adodc1连sql的,请问如何批量修改数据库的ip地址?
- 我想在TEXT控件中输入文字完毕后, 按回车键后使TEXT.backcolor=$00000ha,
- 求教:帮程序打包时,如何改变data control控件的路径
- 求教:打包中的一个问题
字符串数据小于26时就没问题
大于100肯定出错
用msgbox停顿一下就没问题.
真是搞笑下面是进一步简化的代码
望各位老大帮忙
http://ufouser.b155.zgsj.com/VbNet_Error_Simpled.rar
同时直接贴上代码:VERSION 5.00
Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
Begin VB.Form Form1
Caption = "VB_Net"
ClientHeight = 7440
ClientLeft = 60
ClientTop = 450
ClientWidth = 6120
LinkTopic = "Form1"
ScaleHeight = 7440
ScaleWidth = 6120
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton cmdCStart
Caption = "再新开一个此程序启动客户端客户端启动"
Height = 1935
Left = 4920
TabIndex = 4
Top = 4440
Width = 975
End
Begin VB.CommandButton cmdSStart
Caption = "先启动服务端"
Height = 1095
Left = 4440
TabIndex = 3
Top = 3240
Width = 1575
End
Begin VB.TextBox txtIn
Height = 375
Left = 240
TabIndex = 1
Top = 6840
Width = 4215
End
Begin MSWinsockLib.Winsock tcpServer
Left = 5640
Top = 840
_ExtentX = 741
_ExtentY = 741
_Version = 393216
End
Begin VB.CommandButton cmdSend
Caption = "发送"
Height = 615
Left = 4920
TabIndex = 0
Top = 6600
Width = 975
End
Begin MSWinsockLib.Winsock tcpClient
Left = 5640
Top = 240
_ExtentX = 741
_ExtentY = 741
_Version = 393216
End
Begin VB.Label lblTcpMode
Height = 495
Left = 4680
TabIndex = 2
Top = 1680
Width = 1095
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit'包装的发送结构
''''''''''''''''''''''''''''''''''''''''''''''''''''''
'若chat长度大于100就出错
Private Type NetMsg
chat As String * 20 '聊天信息
End Type
''''''''''''''''''''''''''''''''''''''''''''''''''''''Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Sub cmdCStart_Click()
Print "启动客户端..."
tcpClient.RemoteHost = "localhost"
tcpClient.RemotePort = 5000
Call tcpClient.Connect '连接
Print "启动完成"
cmdSend.Enabled = True
txtIn.Visible = True
cmdSStart.Enabled = False
cmdCStart.Enabled = False
End Sub'发送按钮
Private Sub cmdSend_Click() Print Dim msg As NetMsg
msg.chat = txtIn.Text
Print "读入聊天信息: " & msg.chat
Dim buffer() As Byte
ReDim buffer(LenB(msg))
CopyMemory buffer(0), msg, LenB(msg)
Print "客户端二进制转换完成"
Call tcpClient.SendData(buffer)
Print "客户端发送完成"
End SubPrivate Sub cmdSStart_Click() Print "启动服务端..."
tcpServer.LocalPort = 5000
Call tcpServer.Listen '监听
Print "启动完成"
cmdSend.Enabled = False
cmdSStart.Enabled = False
cmdCStart.Enabled = False
txtIn.Visible = False
End Sub
'窗体启动
Private Sub Form_Load()
cmdSend.Enabled = False
End Sub'窗体关闭
Private Sub Form_Terminate()
tcpClient.Close
tcpServer.Close
End Sub'TCP客户端关闭
Private Sub tcpClient_Close()
Call tcpClient.Close
End Sub
'客户端数据发送完成
Private Sub tcpClient_SendComplete()
Print "客户端数据发送完成"
End Sub
'TCP服务端关闭
Private Sub tcpServer_Close()
Call tcpServer.Close
Call tcpServer.Listen
End Sub'TCP服务端连接
Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
If tcpServer.State <> sckClosed Then
Call tcpServer.Close
End If
Call tcpServer.Accept(requestID)
End Sub'TCP服务端数据到达
Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
Dim msg As NetMsg
Print
Print "服务端收到数据, 正在解析..."
''''''''''''''''''''''''''''''''''''''''''''''''''
Dim buffer() As Byte
ReDim buffer(bytesTotal)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'此处加这一句那么聊天信息长度超过26也能解决问题
MsgBox ("共收到:" & bytesTotal & "字节")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'DoEvents
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Call tcpServer.GetData(buffer)
Print "获取二进制数据完成, 共" & bytesTotal & "个字节"
'生成结构体
CopyMemory msg, buffer(0), LenB(msg)
Print "转换成信息结构体完成"
'显示收到的信息
Print "解析完成,信息为:" & msg.chat
''''''''''''''''''''''''''''''''''''''''''''''''''
Print "完成..."
End Sub'TCP服务端错误
Private Sub tcpServer_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox ("TCP Server Error:" & Source & ":" & Description)
End Sub
Dim buffer() As Byte
ReDim buffer(bytesTotal)
tcpServer.GetData buffer(), vbArray