我现在有这样的一个项目,需要用SOCKET做服务器端与客户端沟通,每个连接每天的数据量不会很多(也就是说1个连接一天也达不到1KB的数据流量),但连接数量也就是客户端可能很多(肯定超过100以上),这样做,C#是否可以胜任呢?由于我是做网站出身,所有软件不太懂。所以请教一下各位路过的前辈,不知道可行性如何。另外,如果用别的方式,也就是说服务器端没有数据需要发送给客户端,这条连接就关闭,只有服务器需要连接客户端才执行连接,是否可行,当然,这是那种“网站”形式。也就是说,类似于服务器端访问客户端的“类网站程序”发送并接收数据。还有,如果这样的可行性不高,也就是说连接量大C#不能胜任,在考虑到开发与运行环境下,采用什么程序开发比较合适呢?

解决方案 »

  1.   

    这种小数据量,连接次数多的应用,UDP比TCP好
    TCP建立一次连接的时间都可以发送好几个UDP包了,但是简单方便,不用管连数是否送到,接收端是否需要重新按顺序组装包的问题
    UDP的话自己要写代码实现确保对方一定收到,收到的包可能是乱序的,需要重新组合楼主如果是做网站出身的话,可以考虑基于ASP.NET的WebService来实现另外网络数据传输再快也快不过本机内存的数据交换,C#就算是相对其它语言Native性能上有些弱,但处理数据的速度也远远大于Socket接收发送的速度,所以语言本身不是问题,主要还是看你怎么应用
      

  2.   

    感谢楼上的兄弟。但我考虑的问题是,网站肯定不合适,因为给客户服务器不用来做网站,所以在客户端上装个IIS不太合适,而且从配置角度来说,客户如果啥都不懂,那就不好了,所以考虑做个傻瓜式的,客户端只要安装上,就OK了,别的啥都不用。UDP听说爱丢包,我对它的印象不太好,感觉TCP/IP比较稳定。当然,这可能是“迷信”吧。
    您的意思是说,如果连接量多,但数据量小的情况下,c#也可以胜任我的要求么???
      

  3.   

    c#做网络开发还是可以胜任的,你可以放心的去做,编程主要注意多线程就可以了 。既然用的都是socket,和语言就没什么关系了,只不过c#封装了一些东西,使开发更顺利一些。你就放心去做吧。
      

  4.   


    之所以我这样问,是因为,听说C#做的SOCKET 连接量达到100以上,效率就很低!而且很多前辈都这样告诉过我……
      

  5.   


    socket是操作系统帮你搞定的,这个和用什么语言没有关系,我也说了UDP虽然是不可靠连接,但是可以通过自己写代码来保证可靠性,QQ不就是这么做的么。另外既然是在.NET上混的,就要对C#要有信心,不要把C#想得这么弱,就写应用程序这一块来讲,其它语言能实现的C#同样可以实现。
    其实就楼主这样的情况用什么语言不在于开发人员,而是看具体需要,比如说客户端是不是允许我们装framework(这是限制C#Winform程序发展的很大一个原因),如果不行的话不不要考虑了
      

  6.   


    任何程序写的TCP连接数达到这样高的情况效率都会降得很低的,C#本质上也是调用的系统API来实现的,这个和程序语言没有关系
      

  7.   

    呵呵,这个到好做了,因为我的客户100%都是用 WIN2003系统,这个是我最欣慰的地方。
    至于对C#的信心,我觉得,它还是很优异的,起码快捷,方便,不过,因为兄弟我以前没做过C#的WINFORM ,也不太了解SOCKET的脾气,所以要先请教一下,做到尽量少走弯路。