我正在(客户端 - 服务器)之间创建文件传输应用程序并拥有我需要的工具,但我对如何发送文件感到有些困惑。这就是我所拥有的:
它们都运行正常,但我只需要一种方法来编写代码来将我想要发送的项目放入队列中。我还需要一个指向我的应用程序发送的当前文件的指针。成功发送第一个文件后,指针应转到列表中的下一个文件并启动发送方法。
我该怎么做?
如果您对c#或伪代码或任何可以帮助我的任何事情有所了解,请知道我会感激不尽。
答案 0 :(得分:1)
由于我不完全确定你需要帮助的地方,我会概述一下好的技巧:
我想你必须实施回复。 我希望您已经使用TCP,它会自动验证正确接收的数据包。但是,使用此内置功能,您无法验证是否已成功发送整个文件。
如果您可以增加服务器和客户端之间发送的数据包数量,则可以编写服务器在收到整个文件时发送的回复。获得此回复后,指针可以增加1(转到下一个列表项),send方法将与下一个文件一起运行,整个过程将重复。
从客户端和服务器发送/回复或推送/监听功能是将错误或确认从一个推送到另一个的好方法,并使两端保持正常工作 - 了解对方正在做什么。
如果您尝试最小化在客户端和服务器之间发送的数据包,则可以使用UDP,但这对于文件传输等问题确实不是一个好的选择。您也可以简单地将所有数据流式传输到一个大块中,而不是一点一点地流式传输 - 但是您无法根据需要对每个要发送的文件进行真正的验证。
答案 1 :(得分:1)
您可以这样做..当您将项目添加到列表中时..将每个项目标记设置为false ..这意味着您尚未发送它
item.Tag = false;
然后当你开始发送物品..它会检查每个物品的标签,如果为假(尚未发送),你将发送它并将其标签设置为True(物品已发送)等等
void startTransferFiles()
{
foreach (ListViewItem item in listView1.Items)
{
if ((bool)item.Tag == false)
{
Send(item.ToolTipText);
item.Tag = true;
}
}
}