吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1446|回复: 7
收起左侧

[求助] C#UDP求助

[复制链接]
ITgod 发表于 2019-8-5 10:34
请问怎么让收到字符1重新延迟或计时,就是 System.Threading.Thread.Sleep(5000);没有执行完又收到一个字符1,后面代码不执行, System.Threading.Thread.Sleep(5000); 重新计时
[C#] 纯文本查看 复制代码
static void Main(string[] args)
        {
            int recv;
            byte[] revData = new byte[1024];
            byte[] sendData = new byte[1024];
            IPEndPoint ip = new IPEndPoint(IPAddress.Any, 8421);
            Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            newsock.Bind(ip);
            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
            EndPoint Remote = (EndPoint)(sender);
            while (true)
            {
                sendData = new byte[1024];
                recv = newsock.ReceiveFrom(sendData, ref Remote);
                string recvData = string.Format(Encoding.Default.GetString(sendData, 0, recv));
	//收到字符1发送给客户端
                if ("1".Equals(recvData))
                {
	    UdpClient dqkUdp = new UdpClient(0);
//数据men
                    byte[] men = { 0xCA, 0x20, 0xF0, 0x18, 0x02, 0x03, 0x00, 0xAC };
                    dqkUdp.Connect("192.168.xxx.xxx", xxxx);
                    //延迟5秒(计时)
                    System.Threading.Thread.Sleep(5000); 
                    dqkUdp.Send(men, men.Length);
	    dqkUdp.Close();
                }
            }
        }

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

sapoiuyt 发表于 2019-8-5 10:57
加一个lock  进去休眠前的时候先lock
 楼主| ITgod 发表于 2019-8-5 12:03
 楼主| ITgod 发表于 2019-8-5 13:08
sapoiuyt 发表于 2019-8-5 10:57
加一个lock  进去休眠前的时候先lock

加锁是同步,我的意思是延迟没有执行完又收到字符1,然后重新执行if里面的代码
cxx313120919 发表于 2019-8-5 23:56
本帖最后由 cxx313120919 于 2019-8-5 23:58 编辑

你可以
1、 Socket 的异步接收数据
2、还有你这个 程序就是单线程的  你只能 等if里面运行完了 才能继续 while
所以 你弄个多线程就好  在接收到数据为1的时候就开启线程就好了
这样if 里面的东西也会继续  接收数据也会继续

具体的异步方法  和 多线程 自己百度  
还有 就是 如果不是 特别的话 就不要用 socket  用 tcp类 和udp类
也就是  
TcpListener TcpClient
UdpClient

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
ITgod + 1 + 1 我很赞同!

查看全部评分

 楼主| ITgod 发表于 2019-8-6 08:59
cxx313120919 发表于 2019-8-5 23:56
你可以
1、 Socket 的异步接收数据
2、还有你这个 程序就是单线程的  你只能 等if里面运行完了 才能继续  ...

谢谢,我在改改
 楼主| ITgod 发表于 2019-8-6 09:15
cxx313120919 发表于 2019-8-5 23:56
你可以
1、 Socket 的异步接收数据
2、还有你这个 程序就是单线程的  你只能 等if里面运行完了 才能继续  ...

再次感谢,可以了
cxx313120919 发表于 2019-8-7 21:55
ITgod 发表于 2019-8-6 09:15
再次感谢,可以了

才开始 是这样的
加油吧骚年
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 11:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表