如题 目前小弟在封装一个TCP网络通信类 遇到一点小疑问
在同步方式发送与接收数据是 数据是按照顺序发送的 我可以使用WriteLine方式一行行发送 在客户端可以开线程使用ReadLine方式读取 没有问题
现在为了提高性能 我想使用异步方式发送数据 但是还有一些疑问
比如我向一个Client用异步的方式发送了10条包含换行符("\r\n")的字符串 在客户端使用同步的ReadLine方式接收的时候 会不会出现10条字符串相互错乱的问题
也就是说 向一个Client异步发送10条数据 在系统内部是一条条发送 还是同时发送10条
如果同时发送10条 那我客户端使用同步的ReadLine方式是不是就会出现错误 那我在客户端使用异步接收的方式可以避免这个数据错乱吗还请各位大侠仗义相救
在同步方式发送与接收数据是 数据是按照顺序发送的 我可以使用WriteLine方式一行行发送 在客户端可以开线程使用ReadLine方式读取 没有问题
现在为了提高性能 我想使用异步方式发送数据 但是还有一些疑问
比如我向一个Client用异步的方式发送了10条包含换行符("\r\n")的字符串 在客户端使用同步的ReadLine方式接收的时候 会不会出现10条字符串相互错乱的问题
也就是说 向一个Client异步发送10条数据 在系统内部是一条条发送 还是同时发送10条
如果同时发送10条 那我客户端使用同步的ReadLine方式是不是就会出现错误 那我在客户端使用异步接收的方式可以避免这个数据错乱吗还请各位大侠仗义相救
解决方案 »
- 求助,这段C++代码该如何改成C#的? 里面指针看的我眼花。
- 数据库更新慢的问题
- 正则表达式中的组是如何表示的
- c#一个treeview控件,我怎么得到里面第三级节点的完整路径?
- 高分求解 如何获取DataGridViewButtonColumn 中的Click事件
- tree ownerdraw 问题
- 有关winform里水晶报表的3个问题(总计,大写,No),高手请进...最后仅有的100分
- SMTP问题
- 偶贡献个C#.net时尚编程 100实例下载地方,对初学.NET的程序员有些帮助.
- 见鬼了.奇怪vs2003的问题, 有没有人遇到过? 是否是bug!
- 菜鸟求助关于combobox!!!!!!!
- 大家帮我看看这个get,set方法的作用?
感谢您的回复 小弟想再追问一下 是否可以在客户端同时开十个异步接收 可以同时接收到这十条数据吗 如果可以的话 是不是意思就是他们十个各顾各的不会产生影响呢
另外 我在服务端开启监听后 为了提高性能 同时开启了200个BeginAcceptTcpClient来接收TCP连接 然后开线程通过循环将BeginAcceptTcpClient保持在200个 这样是否能够比我在接收到一个Client的CallBack中再次创建一个BeginAcceptTcpClient性能高 我这样的设计方法有没有问题呢
还请大侠赐教
另外 我看到C#网络高级编程中的异步发送示例中 在StreamWriter.BaseStream.BeginWrite()后面直接跟了StreamWriter.BaseStream.Flush() 按照我的理解 执行完第一句后 数据还没有发送完就执行了flush 这样难道没有问题吗?按照我的理解 应该在EndWrite()后面加Flush()才对啊
循环线程1: 程序生成数据包->加入传输队列
循环线程2: 从传输队列取数据包-〉压缩数据包-〉加入发送队列
循环线程3: 从发送队列取数据->Socket.Send。
在上面三个异步操作中,你是可以控制发送的先后顺序的。接收也是类似。