vb.net 通信问题

robake 2009-12-28 01:15:48
服务器端


Dim CurThread As Thread
Dim CurSocket As Socket
Dim Buffer(100) As Byte
Dim Bytes As Integer
Dim Temp As String
CurThread = System.Threading.Thread.CurrentThread()
While StopListener = False
CurSocket = MainServer.AcceptSocket
ClientCount += 1
Thread.Sleep(50)

If CurSocket.Available > 0 Then
Bytes = CurSocket.Receive(Buffer, Buffer.Length, 0)
SyncLock CurThread
MsgBox(System.Text.Encoding.Default.GetString(Buffer), MsgBoxStyle.OkOnly, "这里")
End SyncLock
'格式化返回消息 - 这通常是
'服务器端处理的结果
Temp = "已收到: "

Buffer = System.Text.Encoding.Default.GetBytes(Temp)

'通过打开的套接字将结果发送回客户端应用程序,然后
'关闭该套接字
CurSocket.Send(Buffer, Buffer.Length, 0)

End If
Application.DoEvents()
If Not CurSocket.Connected Then
StopListener = True
End If

CurSocket.Close()
SyncLock CurThread
ThreadCount -= 1
ClientCount -= 1
End SyncLock
End While
Thread.CurrentThread.Abort()


客户端


Client = New TcpClient("192.162.23.31", 1099)
Dim data As [Byte]() = System.Text.Encoding.Default.GetBytes(Str)
Dim Stream As NetworkStream = Client.GetStream
SendByte(Stream, data)
Threading.Thread.Sleep(50)
Stream.Read(data, 0, data.Length)
DoSend = System.Text.Encoding.Default.GetString(data)
MsgBox(DoSend & data.Length, MsgBoxStyle.YesNo, "收到的数据")
Stream.Close()
Client.Close()


服务器端和客户端收发数据都还正常,问题出在客户端收到的数据是在客户端发送的数据修改了从左边开始的字符后返回的数据。
比如:
客户端发送的数据是chklogin:aaa|bbb
服务端收到的数据是chklogin:aaa|bbb
服务端返回给客户端(假定是)true
则客户端收到的数据是trueogin:aaa|bbb


初步判断,问题出在服务端标红的代码处!请教,这个是什么原因造成的,需要怎么修改。
...全文
57 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
robake 2009-12-28
  • 打赏
  • 举报
回复
清空数组的方法:
for i=lbound(Arr) to ubound(Arr)
Arr(i)=0
next
robake 2009-12-28
  • 打赏
  • 举报
回复
robake 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lovedogdog 的回复:]
发送后清空
[/Quote]

你这个指是的服务端的还是客户端的?
很不好意思,如何清空,请指点一下。
zhaojunquan 2009-12-28
  • 打赏
  • 举报
回复
mark
lovedogdog 2009-12-28
  • 打赏
  • 举报
回复
发送后清空

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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