UDP Socket接收大量数据异常

偶尔e网事 偶尔e网事 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
新手一枚,最近做一个从安卓摄像头传输实时图像到PC端。
安卓方面用UDP传输,采用图片的方式一帧一帧传输,安卓端发送数据包是大概每隔200ms一次,每次大概10KB左右。
PC端采用如下方式接收。
while(true)
{
int i=0;
result = recvfrom(socket,recvBuff,sizeof(recvBuff),0,(sockaddr*)&(pThis->sockFrom),&len); //接收数据,recvbuff开了50000字节
if(SOCKET_ERROR == result)
{
break;
}
pThis->dbg_timeaft=GetTickCount();
DWORD deltaRecv=pThis->dbg_timeaft-pThis->dbg_timepre;
pThis->dbg_timepre=pThis->dbg_timeaft;
CString str;
str.Format("delta=%d\n",deltaRecv);//打印时间间隔
TRACE(str);
memcpy_s(tempBuff,sizeof(recvBuff),recvBuff,result);
//pThis->ImageFromStream((BYTE*)tempBuff,result);
pThis->m_handleData.data=(BYTE*)tempBuff;
pThis->m_handleData.size=result;
::PostMessage(hWnd,WM_RECVDATA,0,LPARAM(&(pThis->m_handleData))); //把WM_RECVDATA消息压入window消息队列,这里丢数据出去处理为图像
memset(recvBuff,0,sizeof(recvBuff)); //memset函数用于初始化buffer区
}

TRACE出的结果如下:
delta=31
delta=16
delta=15
delta=0
delta=16
delta=1156
delta=16
delta=15
delta=16
delta=609
delta=94
delta=1110
delta=46
delta=1891
delta=47
delta=16
delta=15
delta=16

用wireshark抓包,也是发现每隔7个包左右就会出现1~3s的时间内什么都收不到。而且这7个包之间的间隔3ms左右。不是像安卓端均匀的200ms。不知道怎么回事。
请大侠们帮忙看下。感谢~
...全文

相关推荐

UDP socket 多线程

UDP多线程通信 保存数据

lexi_qi

c# UDP 开发

确保在运行这些程序之前,UDP服务器正在监听相应的端口,否则发送方可能会抛出异常。此外,如果你需要处理并发连接或者是大量数据的传输,你可能需要使用异步方法或者调整超时设置等。实例,然后将消息编码并发送到指定的服务器IP地址和端口。接收方同样创建了一个。实例,监听指定的端口,并在有消息到达时接收和解码消息。在这个例子中,发送方创建了一个。在C#中使用UDP进行开发,你可以使用。

StevenChen85

C#中Socket实现UDP通信的详细指南

网络通信是计算机网络中数据交换的方式,对于现代软件开发至关重要。它涉及数据如何在网络中的不同计算机或设备间传输,而C#作为一种强大的编程语言,提供了多种工具和库来支持网络通信的实现。多播是一种网络通信方式,允许将信息从一个发送者发送到多个接收者。这对于某些应用来说非常有用,比如分布式系统中的服务发现。

脑叔

Python基于socket模块实现UDP通信功能示例

主要介绍了Python基于socket模块实现UDP通信功能,结合实例形式分析了Python使用socket模块实现IPV4协议下的UDP通信客户端与服务器端相关操作技巧,需要的朋友可以参考下

weixin_38645865

android udp socket通讯

能够进行UDP简单的通讯,具体用处希望各位自己进行扩展。

简单的低调
评论 26
收藏 已收藏
分享
返回顶部
偶尔e网事
网络编程 18,356 成员 64,161 内容