C# 在C中清除缓冲区内容#

C# 在C中清除缓冲区内容#,c#,visual-studio,buffer,ar.drone,C#,Visual Studio,Buffer,Ar.drone,我正在开发一个程序,在这个程序中,我不断地发送控制命令来控制AR无人机。我将内容写入缓冲区并发送到套接字。 当我执行程序时,无人机没有按要求运行。我认为这可能是由于缓冲区中排队的内容没有发送。 所以我想在发送任何新命令之前清除缓冲区的内容。我该怎么做? 在C语言中,我们可以使用flush()。什么是C#? 我的代码是: Socket sending_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, Prot

我正在开发一个程序,在这个程序中,我不断地发送控制命令来控制AR无人机。我将内容写入缓冲区并发送到套接字。 当我执行程序时,无人机没有按要求运行。我认为这可能是由于缓冲区中排队的内容没有发送。 所以我想在发送任何新命令之前清除缓冲区的内容。我该怎么做? 在C语言中,我们可以使用
flush()
。什么是C#? 我的代码是:

    Socket sending_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

    IPAddress send_to = IPAddress.Parse("192.168.1.1");
    IPEndPoint sending_end_point = new IPEndPoint(send_to, 5556);
    string buff1;
    byte[] buff2;
每次按下按钮时,我都会将一个字符串写入文本文件。然后,我读取文本文件以检索内容,并根据内容发送相应的命令。在文本文件中,每次我都覆盖上一个字符串,因此文本文件中只有一个字符串

    switch (choice1)
                    {
                        case "takeoff":
                            {

                                System.Console.WriteLine("send take-off command");
                                buff1 = null;
                                buff2 = null;
                                buff1 = String.Format("AT*REF={0},290718208\r", seq);
                                buff2 = Encoding.ASCII.GetBytes(buff1);
                                sending_socket.SendTo(buff2, sending_end_point);
                                seq = seq + 1;
                                break;
所以我想在发送任何新命令之前清除缓冲区的内容

在显示的代码中,每次都创建一个新的缓冲区。无需清除/重置/刷新此项


你提到一个
插座
;在这种情况下,这很有可能是纳格尔。尝试设置:

socket.NoDelay = true;
请注意,如果您这样做,您的工作就是在发送之前执行任何必要的缓冲。避免以下情况:

netStream.Write(oneByte);
netStream.Write(threeBytes);
netStream.Write(twoBytes);

因为这将导致数据包碎片。如果您有这样的现有代码,一个实用的修复方法是将
网络流
包装在
缓冲流
中,并在逻辑消息末尾显示
Flush()

您不显示任何与传输相关的内容。你有
套接字
或其他什么东西吗?你需要刷新的东西(如果这是原因)是。你也说“无人机按要求运行”,所以它工作正常吗?是的,我有一个UDP套接字。对不起,我发布的代码只是我正在做的一个示例。实际上,我是在开始初始化缓冲区,然后在按下按钮时写入不同的命令。@wireless\u lab所以。。。在你展示你真正在做什么之前,很难评论;但是,基本的版本是:当调用
Write
/
Send
/任何东西时,允许缓冲区过大;重要的一点是告诉它缓冲区中有多少是实际内容。但同样:如果没有一个你是如何发送的例子,就不能发表评论。