Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将项目添加到队列中,然后开始逐个发送?_C#_Queue_Client Server_Send - Fatal编程技术网

C# 如何将项目添加到队列中,然后开始逐个发送?

C# 如何将项目添加到队列中,然后开始逐个发送?,c#,queue,client-server,send,C#,Queue,Client Server,Send,我正在(客户机-服务器)之间制作一个文件传输应用程序,并拥有所需的工具,但我对如何发送文件有点困惑。这就是我所拥有的: localListView-我可以获取selectedItems的工具,其中包含文件名、路径、当前地址等 remoteListView-与上述相同 采用源路径(localListView中的filePath)和DestinationPath(remoteListView中的currAddress)的Send方法 图片底部的工具是XPTable工具 它们都可以正常工作,但我只

我正在(客户机-服务器)之间制作一个文件传输应用程序,并拥有所需的工具,但我对如何发送文件有点困惑。这就是我所拥有的:

  • localListView-我可以获取selectedItems的工具,其中包含文件名、路径、当前地址等
  • remoteListView-与上述相同
  • 采用源路径(localListView中的filePath)和DestinationPath(remoteListView中的currAddress)的Send方法
  • 图片底部的工具是XPTable工具
它们都可以正常工作,但我只需要一种方法来编写代码,将要发送的项目放入队列中。我还需要一个指针,指向我的应用程序正在发送的当前文件。成功发送第一个文件后,指针应转到列表中的下一个文件并启动send方法

我该怎么做


如果您对如何使用c#或伪代码或任何有助于我的方法有很好的了解,我将不胜感激。

由于我不完全确定您在哪里需要帮助,我将向您概述一些好的技术:

我想你必须实施一个答复。 我希望您已经在使用TCP,它会自动验证正确接收的数据包。但使用此内置功能,您无法验证整个文件是否已成功发送

如果可以增加服务器和客户端之间发送的数据包数量,则可以在接收到整个文件时编写由服务器发送的回复。收到此回复后,指针可以增加一(转到下一个列表项),send方法将与下一个文件一起运行,整个过程将重复

客户机和服务器都具有发送/回复或推送/侦听功能,这是一种将错误或确认从一个推送到另一个的好方法,可以让两端都工作—知道另一个在做什么


如果您试图最小化客户端和服务器之间发送的数据包,您可以使用UDP,但这对于文件传输之类的事情来说确实不是一个好的选择。您也可以简单地将所有数据流成一大块,而不是一点一点地传输,但您不会得到所发送的每个文件的真正验证。。将项目添加到列表中时。。将每个项目标记设置为false。。那意味着你还没有寄出去

item.Tag = false;
然后当您开始发送项目时。。它将检查每个项目的标签,如果为false(尚未发送),您将发送它并将其标签设置为True(项目已发送),依此类推

void startTransferFiles()
{
    foreach (ListViewItem item in listView1.Items)
    {
        if ((bool)item.Tag == false)
        {
            Send(item.ToolTipText);
            item.Tag = true;
        }
    }
}

你到底在哪里需要帮助?我正在使用TCP发送/接收文件。。当文件成功发送时,我可以从服务器收到回复消息。。send方法工作正常。。我想知道的技术,把项目在一个队列中,所以当答复来自服务器“发送”。。我转到下一个文件。。我会写那个的代码。。但是我想使用.Net中的队列库或其他一些库,以确保其正确运行。。我的问题有点像当你去购物时,你不确定你想买什么衬衫。Lol也许本页将帮助您更详细地了解您要做的事情: