[网络编程]-请教关于Socket.BeginReceive的正确用法!? 网络编程服务器buffer异步 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.csharpwin.com/csharpspace/13263r8436.shtml 这篇文章我也看过,是每次BeginReceive的时候new 一个buffer。那样的话,FlyTcp的代码是不是有问题呢?怎样可以测试出他这种共用buffer的方法有问题呢? buffer是缓冲区....http://www.cnblogs.com/chenxizhang/archive/2011/09/10/2172994.html建议LZ看下这个文章..能深入的理解socket异步的东西..另外 FlyTcp是什么?别人封装的DLL么? 我没有听过不过既然封装了 你应该看不到BeginReceive这样的代码.只能看到3个方法..连接发送断开 你好,文章我看了,你发的文章就是我说的FlyTcp的用法。FlyTcp 是网上别人发的轻巧的开源的Tcp库。 //这里的buffer是成员变量,每次Accept一个客户端的时候,都用这同一个buffer传到BeginReceive client.BeginReceive(buffer,0,buffer.Length,SocketFlags.None,new AsyncCallback(ReceiveMessage),client);还有网上看到的另外一种 //这是每次都new 一个。 如果上面那种可以用的话,那下面这种每个都new 是不是有点多余了!? buffer = new byte[1024]; client.BeginReceive(buffer,0,buffer.Length,SocketFlags.None,new AsyncCallback(ReceiveMessage),client); 正常来说 一个全局的buffer就够了 下面的 我个人认为没什么必要..仅仅代表个人观点.. 除非没有并发BeginReceive,必须一个客户端分配一个buffer,但不是每次BeginReceive一个buffer。 有的系统对并发要求不高,可以用串行的模式处理,但是要在程序逻辑上保证它是串行的,就可以只用一个buffer。 写出共享 buffer 的代码,可能是因为急于弄一个演示,缺少一定强度的“并发”测试的结果。先写个测试程序,创建客户端连接并且发送一定量(比如说100k大小)的消息,然后读取服务器返回值验证结果是否正确。然后,你的测试程序只要是并发(比如说20个线程)去循环执行测试程序(比如说每一个线程中都把测试用例执行10遍),瞬间就能发现并发错误。另外,应用程序的 buffer 的大小不等于底层windows网络驱动的缓冲池。底层是1000字节多一点大小(不到1024字节),不代表着应用层也应该这么大。应用程序中应该设置为差不多100万字节,才能保证通讯比较快。 求助 C# 怎样链接 linux 服务器的 FTP 用的是 SSH 传输 C#中if语句没有else也没有return的执行流程是怎样的? 高分求往Oracle数据库中导入excel的源代码。 c#怎么定义全局变量? ZedGraph dataReader[]为什么跳出? 请教一下VS的操作的方便性,感谢进来看一看啊,有答案就结贴 对日开发半年经验,赴日有要的吗?回答满30人,送只赚不赔股票一只。 怎样在资源管理器中加入自定义的右键菜单?在线等待…… 如何断开与FTP的连接? ADO.net提升数据库事务隔离级别的方式有几种? C#怎么把散点图画在chart控件上?
这篇文章我也看过,是每次BeginReceive的时候new 一个buffer。那样的话,FlyTcp的代码是不是有问题呢?
怎样可以测试出他这种共用buffer的方法有问题呢?
client.BeginReceive(buffer,0,buffer.Length,SocketFlags.None,new AsyncCallback(ReceiveMessage),client);还有网上看到的另外一种 //这是每次都new 一个。 如果上面那种可以用的话,那下面这种每个都new 是不是有点多余了!?
buffer = new byte[1024];
client.BeginReceive(buffer,0,buffer.Length,SocketFlags.None,new AsyncCallback(ReceiveMessage),client);