private async Task SendFile() { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "压缩文件|*.zip;*.jar;*.rar";//文件扩展名 dialog.CheckFileExists = true; dialog.ShowDialog(); if (!string.IsNullOrEmpty(dialog.FileName))//可以上传压缩包.zip 或者jar包 { try { byte[] buffer = UdpHelper.FileToBytes(dialog.FileName);//文件转成byte二进制数组 var packages = new UdpHelper(65000).PackageSlice(buffer, 1, UdpFileModel.File); var c = 0; foreach (var package in packages) { await _client.SendAsync(package, package.Length); LbSendFileProcess.Content = $"{++c}/{packages.Count}"; await Task.Delay(1); } UdpHelper.ClearPackages(1); } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
private void ReceiveFile() { IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 11000); //var udpClient = new System.Net.Sockets.UdpClient(); while (true) { Byte[] receiveBytes = receivingUdpClient.Receive(ref remoteIpEndPoint); //var name = Thread.CurrentThread.ManagedThreadId.ToString(); try { //Dispatcher.Invoke(() => //{ // TbReceiveContext.Text += name + Environment.NewLine; // TbReceiveContext.ScrollToEnd(); //}); //Byte[] receiveBytes = udpClient.Receive(ref remoteIpEndPoint); var op = _udpHelper.PackageConcat(receiveBytes); if (op == 0) { Dispatcher.Invoke(() => { //LbReceive.Content = $"{++count + 1}"; LbReceiveFileProcess.Content = $"{++count}/{UdpHelper.Packages[0].PackageCount}"; }); } if (op == 1) { var buffer = _udpHelper.PackageMerge(UdpHelper.Packages, 1); Dispatcher.Invoke(() => { //LbReceiveFileProcess.Content = $"{++count}/{UdpHelper.Packages[0].PackageCount}"; UdpHelper.BytesToFile(buffer, $"E://1.zip"); UdpHelper.ClearPackages(1); MessageBox.Show("接收成功!"); count = 0; }); } } catch (Exception e) { Console.WriteLine(e.ToString()); } } }