如何提高UPD广播发送速度???
由于项目要求,要用到广播发送数据,接收端为自己硬件,不是计算机,所以没有IP之说,只能在发送端用UDP广播的形式把数据发送出去。下面是我发送部分的代码,各位大大帮我看看有没有什么值得修改的地方以提高发送速度,因为目前的速度,无法满足我们的需求,通过示波器,可以发现我这代码的占空比特别高;而我这下面代码都是极限测试了,没有等待就是不停发,但还没有我在网上找到的一个程序的占空比高,所以感觉我这个程序存在严重问题,希望知道的大大帮忙看看,谢谢
WSADATA wsaData; //指向WinSocket信息结构的指针
SOCKET sockListener;
SOCKADDR_IN sin,saUdpServ;
BOOL fBroadcast = TRUE;
char sendBuff[100];
int nSize;
int ncount=0;
if(WSAStartup(MAKEWORD(1,1),&wsaData)!=0)//进行WinSocket的初始化
{
MessageBox(NULL,"Can't initiates windows socket!Program stop.","",MB_OK);//初始化失败
}
sockListener=socket(PF_INET,SOCK_DGRAM,0);
setsockopt(sockListener,SOL_SOCKET,SO_BROADCAST,
(CHAR *)&fBroadcast,sizeof(BOOL));
int nSendBuf=0;//设置为0
setsockopt(sockListener,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(nSendBuf));
sin.sin_family = AF_INET;
sin.sin_port = htons(0);
sin.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(sockListener,(SOCKADDR *)&sin,sizeof(sin))!=0)
{
MessageBox(NULL,"Can't bind socket to local port!Program stop.","",MB_OK);//初始化失败
}
saUdpServ.sin_family = AF_INET;
saUdpServ.sin_addr.s_addr = htonl(INADDR_BROADCAST);
saUdpServ.sin_port = htons(7001);//发送用的端口,可以根据需要更改
nSize = sizeof(SOCKADDR_IN);
strcpy(sendBuff,"This is a Test");
while(!csVar.bStop)
{ //下面的struct SendCopyScreenStruct 大小为(512+2)*4+8个字节
sendto(sockListener,(char *)&csVar.sendObject[nItem],
sizeof(struct SendCopyScreenStruct),0,(SOCKADDR *)&saUdpServ,
sizeof( SOCKADDR_IN ));
ReleaseSemaphore(csVar.hEmptySendBuffMutex,1,NULL); //空发送缓冲数+1
nItem++;
if(nItem == MAXCOUNT_BUFF)nItem = 0;
}
...全文


网络编程
