看了《TCP/IP详解》一书,对几个问题不太明了,其中之一就是TCP协议是单线程还是多线程实现的?我看书里写的好像是单线程实现的,那如果这样的话多CPU电脑在TCP协议上不就体现不出来优势了吗?
因为我要实现一个UDP为基础的可靠传输协议,所以有此一问,因为我不知道我的协议应该是单线程还是多线程,请指教

解决方案 »

  1.   

    PC可以同时处理多个TCP的,只不过端口不一样吧了.
      

  2.   

    To 1楼: 我知道可以同时处理多个连接,我的问题是这么多个连接是并行处理还是串行处理,如果CPU个数多的话速度会不会增快,是不是类似与应用层的多线程呢?
    感谢回答
      

  3.   


    宏观上是并行的,微观上是串行的,与多线程确实有些类似。网络速度和连接数之间没有必然的联系,唯一对速度起决定性作用的是你的网络出口带宽,就如决定程序速度最主要的因素是CPU的速度而不是程序的线程数量。
      

  4.   

    基于TCP创建服务器时,如果是同步的话,那每个客户连接对应一个线程,但是如果采用异步方式,服务端就可以实现单线程通讯,但有个问题,如果只用一个线程,客户连接数会有限制,对于select和WSAEventSelect默认只有64个,而且在单线程的情况,系统吞吐量不高,建议使用线程池来创建服务端,每个线程对应几十个客户连接。
      

  5.   

    不知道你要实现哪一层的协议,目前的 TCP UDP 实现库一般都是可以在多线程环境下运行的,毎一层基本上都有buffer,
    所以是并行还是串行影响不大,基本上程序的瓶颈都不会出现在协议层上,还是应该好好设计程序的架构;多CPU或者多核肯定
    提高系统的处理能力,我觉得你现在不用考虑这方面的问题;
      

  6.   

    TO 5楼: 我要实现的是应用层的可靠协议,用UDP模拟TCP的,我想用多线程来设计,但是多线程之间的同步问题搞的我头都大了,所以我想改用单线程来设计,但是我怕单线程会影响性能(现在电脑一般都是双核CPU的多,如果是多线程可以大大提高性能),我看TCP的源代码好像是单线程模型,不太确定,看的不大懂,请达人指教
      

  7.   

    简单的说就是用不可靠的udp协议实现可靠的udp文件传输协议,带有差错重传,校验等功能
      

  8.   

    我的目标是在应用层上实现,我问的是驱动层上的TCP是用单线程还是多线程