请教大侠:如何精确控制UDP发送速度?

hohai 2002-09-04 10:11:33
如何精确控制UDP发送速度?望各位大侠不吝赐教。
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
renxiaoyao 2002-09-09
  • 打赏
  • 举报
回复
gz
timeguest 2002-09-08
  • 打赏
  • 举报
回复
要很精确的不太可能也没有意义
下面的方法是我读研究生时做视频广播的代码(大意):

hDataTimerEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
mmDataTimer = timeSetEvent(20,4,
(LPTIMECALLBACK)hDataTimerEvent,
0,
TIME_PERIODIC|TIME_CALLBACK_EVENT_SET);
HANDLE hMultipleEvent[4] = {hDataTimerEvent,m_hBeginPlay,m_hEndPlay,m_hTerminateThread};

for (;;){
dwRet = MsgWaitForMultipleObjects(4,hMultipleEvent,FALSE,INFINITE,QS_POSTMESSAGE);
switch (dwRet){
case WAIT_OBJECT_0://data timer event
ResetEvent(hDataTimerEvent); SendData(...);

case WAIT_OBJECT_0 + 1://begin play
ResetEvent(m_hBeginPlay);
if (m_bStarted==FALSE){
//just indicate the state of starting, not necessarily means beginning of play
//because there maybe no program to play.
m_bStarted = TRUE;
}
break;
case WAIT_OBJECT_0 + 2://end play
if (m_bStarted==TRUE){
m_bStarted = FALSE;
}
ResetEvent(m_hEndPlay);
break;
case WAIT_OBJECT_0 + 3://terminate the thread
timeKillEvent(mmDataTimer);
CloseHandle(hDataTimerEvent);
return 0;
case WAIT_OBJECT_0 + 4://message being posted by other thread been received
break;
default:
SetBSErrorCode(BSERR_WAIT_ERROR);
return 0xFFFFFFFF;
}
}

上面的代码是在一个线程里运行的,使用多媒体定时器保证精度(毫秒级)只要send的时间不是很长(一般都很短,尤其是UDP)。
hohai 2002-09-04
  • 打赏
  • 举报
回复
xuying,你好!
我是通过Sleep(msec)函数来控制的,您能否说明一下,如何把计时间隔变的足够小。下面的代码可行吗》
dwActLen=m_hFile.Read(pData,lDataLen/4);

if (sendto (sockfd, (char *)pData, dwActLen, 0, (struct sockaddr *)&addr, sizeof(addr))
== SOCKET_ERROR)
{
wsprintf (szError, TEXT("sendto failed! Error: %d"),
WSAGetLastError ());
MessageBox (NULL, szError, TEXT("Error"), MB_OK);
closesocket (sockfd);
return FALSE;
}

Sleep(DelayMs);
盼回复,谢谢!
ornot 2002-09-04
  • 打赏
  • 举报
回复
这种方法可能不是很精触,sendto可能会阻塞住,不知会不会影响精度?

关注中!建议使用QOS机制:)


xuying 2002-09-04
  • 打赏
  • 举报
回复
将计时间隔变的足够小就可以了。

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧