加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[VB.NET]询异步socket通信完善的例子.

发布时间:2020-12-16 23:37:36 所属栏目:大数据 来源:网络整理
导读:询异步socket通信完善的例子. 我最近试着用异步写,但是发现收到的开头丢掉了一些,不知道我代码哪点的原因. 我基本上是如下思路. server是java写的,我主要用vb.net写client端. 先是form_load的时候,socket.connect,并且启动receive的一个线程和处理数据的线城
询异步socket通信完善的例子. 我最近试着用异步写,但是发现收到的开头丢掉了一些,不知道我代码哪点的原因. 我基本上是如下思路. server是java写的,我主要用vb.net写client端. 先是form_load的时候,socket.connect,并且启动receive的一个线程和处理数据的线城.窗体出来后,点按钮,向server发送用户名,登陆服务器,然后服务器返回信息. receive的线程中代码主要如下: While True Try mySocket.BeginReceive(ss.myBuffer,ss.myBuffer.Length,socketFlags.None,New AsyncCallback(AddressOf putSockBuffer),ss) receiveThread.Sleep(50) Catch ex As Exception System.Console.WriteLine(ex.Message) End Try End While 回调函数主要代码如下 Try If ar.IsCompleted Then ss = CType(ar.AsyncState,SocketState) 收到的bytes内容 System.Console.WriteLine(Encoding.GetEncoding( GB2312 ).GetString(ss.myBuffer)) Try bufferUbound = socket_buffer.GetUpperBound(0) Catch ex As Exception bufferUbound = -1 End Try bytesRec = ss.myBuffer.Length If bufferUbound < 0 Then ReDim socket_buffer(bytesRec - 1) System.Array.Copy(ss.myBuffer,socket_buffer,bytesRec) Else ReDim Preserve socket_buffer(bytesRec + bufferUbound) System.Array.Copy(ss.myBuffer,bufferUbound + 1,bytesRec) End If System.Console.WriteLine(Encoding.GetEncoding( GB2312 ).GetString(socket_buffer)) End If Catch ex As Exception System.Console.WriteLine(ex.Message) End Try 谢谢 __________________________________________________________________________ http://www.codeproject.com/useritems/winsock2005.asp 参考这个,我觉得这个做的很好,完全的事件驱动 __________________________________________________________________________ 我看了些别人的代码,发现我不应该把beginReceive写在一个循环里,而是在一次beginReceive中触发的回调函数中再beginReceive一下,如此反复,做到持续接收数据。 大家说是这样么? __________________________________________________________________________ mark __________________________________________________________________________ 我发现,我这样做后,就是 在一次beginReceive中触发的回调函数中再beginReceive一下,如此反复,做到持续接收数据,但我一直设的buffer是1024,所以第一次触发的时候,buffer全是0,没办法,我现在设buffer为1,就是一次接收一个字节,目前试了几次,发现接收数据还行. __________________________________________________________________________ 我上面给了个例子给你,怎么就不去看看别人怎么写的呢? __________________________________________________________________________

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读