首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

询异步socket通信完善的例子.该怎么处理

2012-01-12 
询异步socket通信完善的例子.我最近试着用异步写,但是发现收到的开头丢掉了一些,不知道我代码哪点的原因.

询异步socket通信完善的例子.
我最近试着用异步写,但是发现收到的开头丢掉了一些,不知道我代码哪点的原因.
 
我基本上是如下思路.   server是java写的,我主要用vb.net写client端.
先是form_load的时候,socket.connect,并且启动receive的一个线程和处理数据的线城.窗体出来后,点按钮,向server发送用户名,,登陆服务器,然后服务器返回信息.
 
 
receive的线程中代码主要如下:
                While   True
                        Try
                                mySocket.BeginReceive(ss.myBuffer,   0,   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,   0,   socket_buffer,   0,   bytesRec)
                                Else
                                        ReDim   Preserve   socket_buffer(bytesRec   +   bufferUbound)


                                        System.Array.Copy(ss.myBuffer,   0,   socket_buffer,   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

参考这个,我觉得这个做的很好,完全的事件驱动
[解决办法]
mark

热点排行