读书人

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

发布时间: 2012-01-12 22:11:58 作者: rapoo

询异步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

读书人网 >VB Dotnet

热点推荐