请问socket进行视频传输时外网传输速度很慢怎么办 20C

我在本地测试速度还很好的,使用240x320的摄像头,每一帧size大概在
3~4万(byte)之间(JPEG传输),本地测试100%传输。但是一到外网,比如我从本地
传输到外网服务器,然后经过外网服务器获取连接到它的我本地的另外一个
客户端,经过NAT转换后从外网又发回来,获取以后直接打通NAT进行P2P传输,
与本地测试的唯一区别就是地址换成了外网IP,但是这时传输只有12/3~4万(byte),
这个速度业太慢了~不知道是为什么,有大神知道其中的原因吗?
发送接收协议是:
发送端使用sendto发送"push 30000",紧接着再使用sendto发送jpeg数据
接收端使用recvfrom获取到字节数int size=30000,紧接着
使用dummy[1000000]按照下面的recvfrom来接收数据:
int ret = recvfrom(PrimaryUDP, dummy, size, 0, (sockaddr *)&remote, &fromlen);
两次发送和两次接收之间都是没有任何延时的。
本地测试ret为size的大小,但是外网传输时ret为12或者更少的时候只有6!
我尝试过使用while(total < size) total += recvfrom(...);
但是结果还是只有12byte因此循环就等了好久。。。
请大神指教,如果实在不行希望能指教一下如何压缩数据(我认为压缩数据仍旧
不能挽救只接收到12byte的事实,应该是协议有些问题,求教有经验的指教视频
比如说直播间的数据传输是怎样的协议)

2个回答

stophin
stophin 这个完全反过来的,什么原理
接近 3 年之前 回复

Mina、Netty、Grizzly

stophin
stophin 大哥我是用C++的socket写的,JAVA要怎么读摄像头?
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!