winsock网络程序如何提高传输速率?
本帖最后由 oyljerry 于 2013-01-20 17:40:54 编辑 俺在做网络编程相关的项目。碰到了很多问题,来向各位前辈请教。俺是刚学编程的小白一个,所以有些低级问题,各位不要见笑。
程序实现一个server端向多个client端传送大量样本点(样本点可能有几千或者上万个,每个样本点为double型)。我用的是VC++6.0,是在MFC框架下用CAsyncSocket类来实现的。现在可以传数据了。但是传输速率感觉很慢。
问题一:怎么测这些样本点的传输速率?怎么测传输延时?使用工具还是写代码还是这些功能已经集成在开发环境中了?
问题二:如果传输速度比较慢,如何实现Server和Clinet间的高速传输?
问题三:每次往套接口发送一个double型数据,但用wireshark抓包看到data只有1个或者2个字节或者7个字节,为什么?
下面是发送端server的发送数据代码段:
while(!feof(stream))
{
count=fread(&data,sizeof(double),1,stream);
//设置发送缓冲区大小
if(getsockopt(sendSockets[idx-1],SOL_SOCKET,SO_SNDBUF, (char*)&SndBuf,&SndBufSize)!=SOCKET_ERROR)
{
if(SndBuf<1024)
SndBuf=1024;
setsockopt(sendSockets[idx-1],SOL_SOCKET,SO_SNDBUF,(char*)&SndBuf,SndBufSize);
}
//逐点发送信号
WaitForSingleObject(hMessageSend[idx-1],20);
if((SOCKET_ERROR==sendSockets[idx-1].Send(&data,count)))
{
NumError=GetLastError();
}
}