求助!C#写一个中等并发高数据流高动态的服务器

问题描述

小弟不才,开始想偷工减料,用C#结合国外的IPworks控件,写一个中等并发高数据流高动态的服务器,但是经常连不了多少用户,底层的IPworks服务器控件IPDeamon类,经常会卡住,整个服务器就不再具备通信能力了。监视线程发现,所有的线程都在Ipdeamon类的m_server.Connections[connectionid].DataToSendB=e.TextB,也就是类似Socket的Send函数上阻塞了。查了很多资料,目测这个控件是采用的是同步+阻塞的方式,而我的服务器数据流并发性要求200个以上,并且每个链接数据流很大(1-2K/S,每秒都在发)。最初我用的是事件响应,然后直接在响应函数中转发数据,后来我听了一个朋友的建议,把Send函数放到线程池中,但是现象还是一样的,会把整个服务器阻塞。各位大大有没有什么建议?我的服务器设计是这样的,要能够同时支持200个以上的用户连进来,然后用户不停的发数据,我的服务接收到用户的数据,要完全转发给另一边的服务器(这个用的商用软件),然后等到另一边服务器给我发数据过来,每秒都发(数据量1-2KB/S,总带宽平均需要2M),然后我本地编辑过并重新编解码以后,再转发给用户。调试了半个月,发现IpWorks的服务器控件可能还是不能适用于我

解决方案

解决方案二:
博客园有个supersocket你可以看下。另外IPWorks是否支持异步通信?如果能,改成异步模式应该能解决你的问题。
解决方案三:
引用1楼的回复:

博客园有个supersocket你可以看下。另外IPWorks是否支持异步通信?如果能,改成异步模式应该能解决你的问题。

在IPworks的说明里,他声称已经是异步结构了,我作为服务器,是不是应该采用非阻塞模式呢?我现在出的问题就是会看到所有的线程都停留在Send函数那里,这是阻塞的问题么?
解决方案四:
我想是的。咋到非技术区了。

时间: 2024-09-20 07:28:41

求助!C#写一个中等并发高数据流高动态的服务器的相关文章

求助 需要写一个WCF的服务接口用来访问数据库,报文用XML的结果,哪位能给个例程或者提供个思路呢,不甚感激,我原来的应该程序时用delphi写的。

问题描述 求助需要写一个WCF的服务接口用来访问数据库,报文用XML的结果,哪位能给个例程或者提供个思路呢,不甚感激,我原来的应该程序时用delphi写的,现在需要写一个接口给第三方查询数据库用,请各位大虾帮帮忙 解决方案 解决方案二:在线等待中,谢谢各位解决方案三:请问你做什么系统的?我做税控需要这东东,正想研究wcf呢!

求助C#写一个插件用来替换表的值

问题描述 有三张表,一张是城市表,一张是车类型表,还有一张表是综合表,不过综合表里的CityID和CarID是中文不是编号,我想读取那两张TXT表的数据,然后替换写入到综合表里,请问怎么写?求组 解决方案 解决方案二:尼玛问题描述能清楚一些么再说你代码不会写至少搞个什么伪代码之类的东东让大家看看吧表结构啥的都不说清楚编程不能懒惰解决方案三:是什么表,数据库的话,可以用触发器什么的.

biff8-求助,写一个VFP直接读写EXCEL二进制文件的程序,求教EXCEL文件格式。

问题描述 求助,写一个VFP直接读写EXCEL二进制文件的程序,求教EXCEL文件格式. 在用VFP读写EXCEL文件数据时,当遇到非标准的EXCEL文件或高版本的EXCEL文件,VFP就会出错.这时通过调用第三方软件转换以后就可以使用了.但是在WINDOWS 7以上,系统会阻止VFP调用第三方软件.只有打开EXCEL文件直接读写数据了. 在网上查了一些资料,但是对EXCEL文件的结构和读写的方法还不明白,求助高人指点一下.目前只能读取和解析文件头,试着读出了扇区列表,目录读取不正确,其他还不会

stack-求助帮忙写一个java程序 有關“字庫搜尋” 有沒有其他人可以幫幫我:)

问题描述 求助帮忙写一个java程序 有關"字庫搜尋" 有沒有其他人可以幫幫我:) **词汇表搜索 # 在这个作业中,你需要写一个能够在一个文件中搜索一个词的应用程序.用户的输入时给出建议(只出现10 个) - 需要注意: 在基础阶段,你可以假设词语的文件已经按升序排列, 但在高级阶段,你的程序应该能够处理的话这是随机顺序. 该文件被加载到程序启动时的程序,即: java Assignment basic_word_list.txt 字表数据结构 您需要使用链表数据结构的单词列表.您需

写一个存储过程,更新5张表,表之间没有关系,表中的字段也不相同,要用传参数的形式

问题描述 写一个存储过程,更新5张表,表之间没有关系,表中的字段也不相同,要用传参数的形式 求助,写一个存储过程,更新5张表,表之间没有关系,表中的字段也不相同,要用传参数的形式.是否可以写在一个存储过程中.谢谢大家啦.遇到难题啦. update语句已经写好了,就是不知道如何整合成存储过程. 解决方案 可以的,一个存储过程可以执行多个update语句

c# com组件-求助c#写com组件有毒 看了无数文章也无法公开一个类中的函数

问题描述 求助c#写com组件有毒 看了无数文章也无法公开一个类中的函数 看了无数文章和博客尝试了无数方法依然无法解决这个问题 编译的com组件永远只有 _object 下的的几个函数自定义的函数一个也没有 下面是看着无数文章写的代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Run

界面-求助! 我现在要写一个winform 程序 刚开始登录的时候

问题描述 求助! 我现在要写一个winform 程序 刚开始登录的时候 求助! 我现在要写一个winform 程序 刚开始登录的时候 是不需要密码 到了主界面 注册密码 就是两个文本框 密码 和 确认 密码 点保存的时候 下次到主界面就要输入密码才能看到其他的功能 相当于 主界面 就一个输入密码 和 提交按钮 我不用数据库 怎么把密码保存下来 解决方案 保存: File.WriteAllText("setting.txt", textBox1.Text + ","

c#写怎么防止并发操作(一个要删文件,一个要读文件)?

问题描述 c#写怎么防止并发操作(一个要删文件,一个要读文件)? c#写web后台文件和数据库操作,怎么防止并发操作(一个要删文件,一个要读文件)? 解决方案 你读文件的时候指定FileShare.Read,你删除的时候就会收到一个异常,不允许删除. 你在读文件的时候除非读完,不要Close文件,就可以了. https://msdn.microsoft.com/zh-cn/library/system.io.fileshare(VS.80).aspx

脚本交互-求助!我想写一个shell脚本 要求可以自动输入密码

问题描述 求助!我想写一个shell脚本 要求可以自动输入密码 困扰很多天的一个问题. 第一句为./ibe combine xxxxx@qq.com key 执行完这一句之后 会提示输入两个密码pw1和pw2 ,能不能写个脚本,将"1111"和"2222"分别在提示输入后自动输入? 谢谢! 我现在已经写出了输入第一个密码的方法 但是第二个密码 2222 不知道应当怎么写才能输入了 请指点! #! /bin/bash echo Content-type: text/h