怎么提高SOCKET的传输利用率

如何提高SOCKET的传输利用率?
环境:   在单线程中采用重叠IO来对SOCKET进行数据传输;
      问题:   在这个线程中只有一条TCP连接时,传输速度是50KB/S;如果多加入几条(比如5条)TCP连接,每一条都可以达到50KB/S;我理解的是,对于整个传输系统来说至少有250KB的传输速率,但在一个TCP连接的情况下却只占用了一部分,没有全部占用;对于单SOCKET传输速率上是不是受到数据包的大小影响?还是什么其他原因?

------解决方案--------------------
一条tcp可以传10~100M/s,主要和你的cpu,网卡硬件相关。
------解决方案--------------------
用udp,全速发送,看能占多大带宽。
------解决方案--------------------
楼主的tcp发送是用什么策略的?
阻塞?非阻塞?
窗口是怎样设置的?
------解决方案--------------------
tcp是持续连接, 传输速度基本取决于ping值/丢包率

-----------------------------
VC/WinAPI 网络/多线程讨论 QQ群, 群号:41356711
------解决方案--------------------
加大TCP两端的发送和接收缓冲区,以及数据缓冲区,如果是采用零缓冲区,则直接加大发送和接收数据缓冲区。
------解决方案--------------------
修改TCP缓冲大小WINDOWS下默认的SOCKET发送和接收缓冲区大小均是4K,你可以用如下代码读出此大小,并修改发送和接收缓冲区。

int rcvbuf;
int rcvbufsize=sizeof(int);

if(getsockopt(m_Socket,SOL_SOCKET,SO_MAX_MSG_SIZE,(char*)&rcvbuf,&rcvbufsize)!
=SOCKET_ERROR)
{
if(rcvbuf <65536)
rcvbuf=65536;
setsockopt(m_Socket,SOL_SOCKET,SO_RCVBUF,(char*)&rcvbuf,rcvbufsize);
}

if(getsockopt(m_Socket,SOL_SOCKET,SO_SNDBUF,(char*)&rcvbuf,&rcvbufsize)!
=SOCKET_ERROR)
{
if(rcvbuf <65536)
rcvbuf=65536;
setsockopt(m_Socket,SOL_SOCKET,SO_SNDBUF,(char*)&rcvbuf,rcvbufsize);
}