本文整理汇总了C#中System.Objects.Send方法的典型用法代码示例。如果您正苦于以下问题:C# Objects.Send方法的具体用法?C# Objects.Send怎么用?C# Objects.Send使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Objects
的用法示例。
在下文中一共展示了Objects.Send方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: StartDownloadNextFilePart
/// <summary>
/// Send a new FPR to the peer for download a file pack of a not-downloading file part.
/// </summary>
/// <param name="download">The download object.</param>
/// <param name="Peer">The IP address of peer to send the FPR message.</param>
/// <returns>Return true if the message has been sended.</returns>
private static bool StartDownloadNextFilePart(Objects.Download download, Objects.Peer Peer)
{
// the index of the not-downloaded file parts
int[] index = new int[download.RemainingFileParts];
int n = 0;
// get the not-downloaded file parts
for (int i = 0; i < download.ListFileParts.Length; i++)
{
if (download.ListFileParts[i] == 128 || (download.ListFileParts[i] > 0 && i == (download.ListFileParts.Length - 1)) )
{
index[n] = i;
n++;
}
}
// select a random not-downloaded file part to download
Random random = new Random();
if (n > 0)
{
while(true)
{
int a = 0;
if (download.RemainingFileParts != 0)
{
a = random.Next(n);
if (download.ListFileParts[index[a]] != 0)
{
// start to download the file part
string[] Params = new string[3];
Params[0] = download.Name;
Params[1] = download.SHA1;
Params[2] = (index[a] * 16384).ToString();
Messages.IMessage FprMess = Messages.MessagesFactory.Instance.CreateMessage(Messages.Commands.FPR, Params);
Peer.Send(FprMess);
return true;
}
}
else
{
return false;
}
}
}
else
{
return false;
}
}
示例2: DownloadFirstNotDownloadedFilePack
/// <summary>
/// Send a new FPR to the peer for download the next not-downloaded file pack of a this file part.
/// </summary>
/// <param name="download">The download object.</param>
/// <param name="Peer">The IP address of peer to send the FPR message.</param>
/// <returns>Return true if the message has been sended.</returns>
private static bool DownloadFirstNotDownloadedFilePack(Objects.Download download, Objects.Peer Peer)
{
for (int i = 0; i < download.ListFileParts.Length; i++)
{
if (download.ListFileParts[i] > 0)
{
int a = i * 128;
for (int n = 0; n < 128; n++)
{
if (download.ListFilePacks[a + n] == false)
{
// start to download the file part
string[] Params = new string[3];
Params[0] = download.Name;
Params[1] = download.SHA1;
Params[2] = ((a + n) * 16384).ToString();
Messages.IMessage FprMess = Messages.MessagesFactory.Instance.CreateMessage(Messages.Commands.FPR, Params);
Peer.Send(FprMess);
return true;
}
}
}
}
return false;
}
示例3: DownloadNextFilePackOfAFilePart
/// <summary>
/// Send a new FPR to the peer for download the next not-downloaded file pack of a this file part.
/// </summary>
/// <param name="filePackNum">The number of the file pack.</param>
/// <param name="filePartNum">The number of the file part.</param>
/// <param name="download">The download object.</param>
/// <param name="Peer">The IP address of peer to send the FPR message.</param>
/// <returns>Return true if the message has been sended; return false if the file part is completed.</returns>
private static bool DownloadNextFilePackOfAFilePart(int filePackNum, int filePartNum, Objects.Download download, Objects.Peer Peer)
{
int nPack = filePackNum;
int partEnd = (filePartNum * 128) + 128;
for(int i = 0; i < 128; i++)
{
if (nPack < download.ListFilePacks.Length)
{
if (download.ListFilePacks[nPack] == false)
{
// download this file pack
string[] Params = new string[3];
Params[0] = download.Name;
Params[1] = download.SHA1;
Params[2] = (nPack * 16384).ToString();
Messages.IMessage FprMess = Messages.MessagesFactory.Instance.CreateMessage(Messages.Commands.FPR, Params);
Peer.Send(FprMess);
return true;
}
}
else
{
return false;
}
if (nPack < partEnd)
{
nPack++;
}
else
{
nPack = filePartNum * 128;
}
}
return false;
}
示例4: LogFilePack
/// <summary>
/// Logs a downloaded file pack and send a new FPR message if is necessary.
/// </summary>
/// <param name="Download">The download object.</param>
/// <param name="StartPoint">The star point of the file pack.</param>
/// <param name="SenderPeer">The sender peer object.</param>
/// <param name="Status">If the file-pack has been written or not ( other ).</param>
public static void LogFilePack(Objects.Download Download, int StartPoint, Objects.Peer SenderPeer, Status_FilePack Status)
{
// indicate the downloading of a file pack
SenderPeer.FilePackDownloaded = true;
if (Status == Status_FilePack.Written)
{
#region ...
int filePackNum = StartPoint / 16384;
int filePartNum = StartPoint / 2097152;
// control if the file pack is already been downloaded
if (Download.ListFilePacks[filePackNum] == false)
{
// update the list of file packs
Download.ListFilePacks[filePackNum] = true;
// update the number of remaining file packs
Download.RemainingFilePacks--;
// update the list of file parts
Download.ListFileParts[filePartNum]--;
// control if the file part is completed
if (Download.ListFileParts[filePartNum] == 0)
{
// update the number of remaining file parts
Download.RemainingFileParts--;
// control if the download is finished
if (Download.RemainingFilePacks == 0)
{
// move the completed download from temp-directory to shared-directory
File.Move(Global.TempDirectory + Download.Name, Global.SharedDirectory + Download.Name);
// update download's informations
Download.Progress = 100;
Download.Active = false;
}
else
{
// send a new FPR to the peer for the next not downloaded file pack of a new file part
StartDownloadNextFilePart(Download, SenderPeer);
}
}
else
{
// send a new FPR to the peer for the next not downloaded file pack of a this file part
if (DownloadNextFilePackOfAFilePart(filePackNum, filePartNum, Download, SenderPeer) == false)
{
StartDownloadNextFilePart(Download, SenderPeer);
}
}
// log the file pack
Download.LogFilePack(SenderPeer.IP, filePackNum);
NewOrUpdatedDownload = true;
}
#endregion
}
// if the FilePack is damaged, will send a new FPR-mess to the peer;
else if (Status == Status_FilePack.Damaged)
{
#region ...
string[] Params = new string[3];
Params[0] = Download.Name;
Params[1] = Download.SHA1;
Params[2] = StartPoint.ToString();
Messages.IMessage FprMess = Messages.MessagesFactory.Instance.CreateMessage(Messages.Commands.FPR, Params);
SenderPeer.Send(FprMess);
#endregion
}
}