当前位置:编程学习 > C#/ASP.NET >>

C#.net 2008下的TCPClient的数据到达事件通知

我使用System.Net.Sockets.TcpClient组件保持对服务器的长连接。然后客户端如果有数据,那么数据通过这个长连接发送给服务器。如果服务器有什么命令,那么通过这个长连接发送给客户端。服务器端是别的公司开发的。我根据协议开发客户端。
我想问的问题是:服务器发送来的命令和数据是随机的。就是发送时间(非定时发送),发送字节数是不定的。那我该怎么知道服务端发来数据?它有没有数据到达通知事件?我目前是通过Available属性的检测来完成的。不知道有没有更好的办法?
--------------------编程问答-------------------- 应该有receive事件的,是阻塞事件。 --------------------编程问答-------------------- 是什么事件名?
怎么使用?
我没有看到有关的事件啊。
还有,该组件是否支持发送的时候,也能接收?就是调用接收方法和发送方法,会不会有冲突 ?
--------------------编程问答-------------------- 在循环里接收,接收是阻塞的,接收到之后处理。
如果要用事件模式的,得采用异步socket编程或者SocketAsyncEventArgs类
http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketasynceventargs.aspx --------------------编程问答-------------------- 我用recive方法接收.然后用send方法发送.那么发送的时候是不是不能接收的?有什么属性判断它是否发送?是不是在send的时候,还没发完,这个时候调用recive方法,那么接收方法会一直等待知道send方法返回? --------------------编程问答-------------------- 没有直接的事件可以用,可使用TcpClient的BeginReceive()异步接收,在调用时注册上你的回调函数就行了,当然你也可以根据此原理扩展一个自定义的事件出来。
另外数据接收后还要根据你的通信业务协议考虑接收到的数据分包、粘包等处理。
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,