vb.net的socket通信

来源:互联网 发布:c语言表白代码我爱你 编辑:程序博客网 时间:2024/05/02 00:34

private sub ClientThread(ByVal clientParam as object)

 

 

dim param as clientThreadParam

param=CType(clientParam,ClientThreadParam)

dim isAuthorizedClient as boolean=false

dim bytes(MaxBufferSize-1) as byte

dim recvBuffer(MaxBufferSize*MaxNumberOfBuffers-1) as byte

 

 

dim lens as Integer =1

dim loopFlg as Integer=0

'循环体内,开始接收数据

do until(lens<=0 or loopFlg>0)

 

   dim packetLength as short=0

   dim offset as integer =0

  try

    lens=param.clientSocket.Receive(bytes)

   catch ex as Exception

    try

      if(param.clientSocket.connected) then

          param.clientSocket.close()

      end if

     catch ex1 as exception

 

   end try

 

 

if (lens=CmdFrameLength and not isAuthorizedClient) then

'认证处理过程

 

else if(lens>CmdFrameLength and isAuthorizedClient) then

 

'数据包接收过程

     if(Not byte(3)=CmdCode0x57) then

       param.clientSocket.close()

       loopFlg=1

     end if

  try

    packetLength=getPacketLength(bytes,me.bigCode.checked)

   catch ex as exception

     param.clientSocket.close()

    loopFlg=1

  end try

 

  '将接收到的数据,保存于缓冲区recvbuffer内

  buffer.blockCopy(bytes,0,recvBuffer,offset,lens)

  offset=offset+lens

 '如果所接收到的包小于所定义的包的长度,继续接收

 do until(offset=packetLength)

      try

      lens=param.clientSocket.receive(bytes)

      offset=offset+lens

       catch ex as exception

          try

           if(param.clientSocket.connected) then

             param.clientSocket.disconnect(true)

          end if

            loopFlg=1

       return

     end try

Loop

 

 '分析所接收到的数据

  AnalysisFrame(recvBuffer,packetLength,ipaddr)

 

 

 

 

 

 

 

原创粉丝点击