请问大家使用C# SOCKET 每隔一毫秒发送一个包(1024字节)速率是多少

上线就吃代码 2015-12-23 02:51:52
我thread.sleep(3)跟thread.sleep(1)一样的速率,发送的只有60K/S,做视频传输的,所以需要每隔2毫秒3毫秒发送一个包,有没有同包遇到类似的问题?
...全文
857 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
CGabriel 2015-12-25
  • 打赏
  • 举报
回复
写了个简单的测试程序,没有任何业务逻辑,就每 1 毫秒发送 1024 的垃圾数据。 测试了一下,1G数据无压力通过,速度远超 60KB/s 所以楼主的问题,多半是程序的其他问题导致的。
上线就吃代码 2015-12-25
  • 打赏
  • 举报
回复
引用 13 楼 p445726392 的回复:
[quote=引用 12 楼 CGabriel 的回复:] 写了个简单的测试程序,没有任何业务逻辑,就每 1 毫秒发送 1024 的垃圾数据。 测试了一下,1G数据无压力通过,速度远超 60KB/s 所以楼主的问题,多半是程序的其他问题导致的。
麻烦上一下代码? 这是我的测试代码
 
[code=csharp]private void button3_Click(object sender, EventArgs e)
        {
            System.Timers.Timer timer = new System.Timers.Timer();
            timer.Elapsed += new ElapsedEventHandler(DispalyTimeEvent);
            timer.Interval = 1;
            timer.Start();
            timer.Enabled = true;
        }
        private void DispalyTimeEvent(object o, ElapsedEventArgs e)
        {
            string str = "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111";
            byte[] data = System.Text.ASCIIEncoding.ASCII.GetBy[code=csharp]
tes(str); // IPAddress ipa = IPAddress.Parse("192.168.0.18"); UdpClient udpclient = new UdpClient(); udpclient.Connect("192.168.0.18",8001); udpclient.Send(data,data.Length); }[/code]
上线就吃代码 2015-12-25
  • 打赏
  • 举报
回复
引用 12 楼 CGabriel 的回复:
写了个简单的测试程序,没有任何业务逻辑,就每 1 毫秒发送 1024 的垃圾数据。 测试了一下,1G数据无压力通过,速度远超 60KB/s 所以楼主的问题,多半是程序的其他问题导致的。
麻烦上一下代码? 这是我的测试代码
 private void button3_Click(object sender, EventArgs e)
        {
            System.Timers.Timer timer = new System.Timers.Timer();
            timer.Elapsed += new ElapsedEventHandler(DispalyTimeEvent);
            timer.Interval = 1;
            timer.Start();
            timer.Enabled = true;
        }
        private void DispalyTimeEvent(object o, ElapsedEventArgs e)
        {
            string str = "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111";
            byte[] data = System.Text.ASCIIEncoding.ASCII.GetBy[code=csharp]
tes(str); // IPAddress ipa = IPAddress.Parse("192.168.0.18"); UdpClient udpclient = new UdpClient(); udpclient.Connect("192.168.0.18",8001); udpclient.Send(data,data.Length); }[/code]
编程有钱人了 2015-12-24
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
做视频传输,应使用硬件发送
用什么硬件发送?
crystal_lz 2015-12-24
  • 打赏
  • 举报
回复
Thread.Sleep 在cpu使用率高的情况下 毫无准确性可言 windows10毫秒切换一次时间片 整个系统中 若是有其他很占用cpu的代码 那么他会吧10毫秒占完才会切到下一个线程 所以 你白认为很精准吗?
xuzuning 2015-12-24
  • 打赏
  • 举报
回复
做视频传输,应使用硬件发送
本拉灯 2015-12-24
  • 打赏
  • 举报
回复
引用 6 楼 wangjun8868 的回复:
[quote=引用 2 楼 wyd1520 的回复:] 这关键得看你的网卡 CPU 网速 这些呀,而不是看代码代码都一样 做视频传输的,所以需要每隔2毫秒3毫一个1024?你视频处理有这么快???相当于秒2-3秒秒一个帧。。。
拉灯 你有什么好的方案?[/quote] 这没有啥方案的呀,关键是,要每秒的帧数及清析度呀,还有压缩算法。这与Socket没啥关系的Socket快慢跟网速 网卡有关,他要2毫秒发1024 相当于1秒500K 还是可以做到的
编程有钱人了 2015-12-24
  • 打赏
  • 举报
回复
引用 2 楼 wyd1520 的回复:
这关键得看你的网卡 CPU 网速 这些呀,而不是看代码代码都一样 做视频传输的,所以需要每隔2毫秒3毫一个1024?你视频处理有这么快???相当于秒2-3秒秒一个帧。。。
拉灯 你有什么好的方案?
上线就吃代码 2015-12-24
  • 打赏
  • 举报
回复
引用 1 楼 jiaoshiyao 的回复:
首先去掉所有Thread.Sleep的代码 看看最大的传输速度 可不可以大于60KB 另外 和 机器配置 网卡 都有关系
我去掉了Thread.sleep 速率是可以达到几M的,但是使用了Threadsleep后影响很大,最多只有60KB
showjim 2015-12-24
  • 打赏
  • 举报
回复
Sleep以后计算与上次触发的时间差,发送数据量根据时间差确定
本拉灯 2015-12-23
  • 打赏
  • 举报
回复
这关键得看你的网卡 CPU 网速 这些呀,而不是看代码代码都一样 做视频传输的,所以需要每隔2毫秒3毫一个1024?你视频处理有这么快???相当于秒2-3秒秒一个帧。。。
jiaoshiyao 2015-12-23
  • 打赏
  • 举报
回复
首先去掉所有Thread.Sleep的代码 看看最大的传输速度 可不可以大于60KB 另外 和 机器配置 网卡 都有关系

110,556

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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