C++ UDP Socket发送速率

问题描述

C++ UDP Socket发送速率
我写了一个UDP发送数据的程序,每个包设置为1024B,如果不控制发送,一直循环
sendto,接收端就会丢包,如果一直sendto一次就Sleep(1),发送速度又太慢了,
网络发送速率才65KB/s,求大神有没有什么好的解决办法?

解决方案

/***********
服务端程序
************/
#include <Winsock2.h>
#include <stdio.h>

void main(){
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1 1 );

......
答案就在这里:C++Socket(UDP)

解决方案二:
发送的包较大,超过接受者缓存导致丢包:包超过mtu size数倍,几个大的udp包可能会超过接收者的缓冲,导致丢包。这种情况可以设置socket接收缓冲。以前遇到过这种问题,把接收缓冲设置成64K试试。
int nRecvBuf=64*1024;//设置为64K
setsockopt(sSOL_SOCKETSO_RCVBUF(const char*)&nRecvBufsizeof(int));
具体设置代码可以参考下面链接:
http://blog.sina.com.cn/s/blog_a459dcf5010153mp.html
另外,发送速度太快确实不行,你可以用usleep或者nanosleep设置更短的延迟

解决方案三:
http://www.educity.cn/wenda/509114.html

解决方案四:
发送端可以,发送五次左右,再Sleep

时间: 2024-12-19 09:30:35

C++ UDP Socket发送速率的相关文章

利用UDP Socket技术实现IP多点传送详解

IP多点传送(MulticastSocket)类IP多点传送(multicast delivery)是针对点到点的传送和广播传送两种方式而言的,它是指在一定的组内对其成员进行的广播,是一种有限的广播.组中的某个成员发出的信息,组中的其它所有成员都能收到.它是UDP Sockets的一个分支. IP多点传送特别适合与高带宽的应用,例如在网络上发送视频和音频.随着网络带宽的不断提高和网络通讯质量的不断改善,IP多点传送还将广泛地被应用于网上聊天及网上会议,分布式数据存储,联机事务处理,交互式游戏等方

线程-android中UDP socket通信的问题

问题描述 android中UDP socket通信的问题 我使用两个线程,一个用来发送 数据,一个用来接收数据,先开启接收数据线程,接收到数据之后然后回应给对方,但是发送一直停在SocketAddess s=pacakge.getSocketAddess这一步,pacakge是接收到的包.接收线程是这样的:while(true){ socket.receive(packge);}接收到包之后我开启发送线程就卡在上面 那步了,是不是 socket在处于阻塞状态时不能发送数据包啊? 解决方案 默认是

UDP socket 设置为的非阻塞模式

UDP socket 设置为的非阻塞模式 Len = recvfrom(SocketFD, szRecvBuf, sizeof(szRecvBuf), MSG_DONTWAIT, (struct sockaddr *)&SockAddr,&ScokAddrLen); UDP socket 设置为的阻塞模式 Len = recvfrom(SocketFD, szRecvBuf, sizeof(szRecvBuf), 0, (struct sockaddr *)&SockAddr,&a

udp-android使用UDP socket通信的地址异常问题

问题描述 android使用UDP socket通信的地址异常问题 我用同学的笔记本开无线,android手机连接上这个无线.进行socket通信,服务器端是我的电脑,手机往我的电脑发送数据包,电脑也接收成功了,但是问题来了,从接收的数据包中获取SocketAddess,显示出的IP地址竟然是我同学笔记本上的IP地址,端口也不是我指定的端口,好像是一个随机端口,为什么会出现这个问题,为什么IP地址不是我手机的IP地址. 解决方案 关于Android中Socket的通信问题android UDP通

udp socket-.Net UDP Socket 通讯时 如何实现客户端连续发信息或服务端连续发信息

问题描述 .Net UDP Socket 通讯时 如何实现客户端连续发信息或服务端连续发信息 本人是新手,写了 C# 的UDP SOcket 通讯程序,目前只实现了 客户端向服务端发送消息,服务端收到消息后回复消息,而 不能实现客户端连续向服务端发消息,服务端连续回复消息. 在查找资料说要使用多线程,但是我不懂,请求高手指导.代码如下: Client: private void btSendMsg_Click(object sender, EventArgs e) { byte[] data =

Linux网络编程之UDP Socket程序示例_C 语言

在网络传输协议中,TCP协议提供的是一种可靠的,复杂的,面向连接的数据流(SOCK_STREAM)传输服务,它通过三段式握手过程建立连接.TCP有一种"重传确认"机制,即接收端收到数据后要发出一个肯定确认的信号,发送端如果收到接收端肯定确认的信号,就会继续发送其他的数据,如果没有,它就会重新发送. 相对而言,UDP协议则是一种无连接的,不可靠的数据报(SOCK_DGRAM)传输服务.使用UDP套接口不用建立连接,服务端在调用socket()生成一个套接字并调用bind()绑定端口后就可

Java小例子:通过Socket发送和接收文件

这是一个简单的包含发送端和接收端的例子.发送端向接收端发送文件名和文件内容 ,接收端将收到的文件保存在磁盘上.接收端可以同时接收多个发送端传来的文件,但没 有处理文件同名的情况. 这个例子中设计了一个简单的协议.发送的内容是这样的: 文件名长度(4字节)-文件名-文件内容长度(4字节)-文件内容 . 接收端也按照这个结构进行解析.建议先看 Client 类,再看 Server 类. 01.import java.io.*; 02.import java.net.ServerSocket; 03.

用Socket发送电子邮件_php基础

用Socket发送电子邮件 在作者所申请的几个PHP 主页空间中,能够提供mail功能的实在不多,总是调用完mail()函数之后就毫 无下文了.但是电子邮件在网上生活中的作用越来越大.想一想网虫上网不收邮件能叫真正的网虫吗?邮件 的作用我不想再说了,但是如果主页空间不支持mail()发送那么怎么办呢?我也想过通过socket来实现邮件 发送,但无奈对用php 进行socket编程不熟悉,再加上发送邮件要用到SMTP协议,又要读不少的英文了,所 以一直也没有去研究过.终于有一天我发现了一篇文章,关

atagram ocket-java udp DatagramSocket 发送接收消息

问题描述 java udp DatagramSocket 发送接收消息 使用如下代码发送并接收消息: SocketClient client = new SocketClient(); String serverHost = ""127.0.0.1""; int serverPort = 3333; client.send(serverHost serverPort (""你好,阿蜜果!"").getBytes()); Str