private async Task SendImage() { Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog(); openFileDialog.Title = "选择文件"; openFileDialog.Filter = "jpg|*.jpg|jpeg|*.jpeg|*.txt"; openFileDialog.FileName = string.Empty; openFileDialog.FilterIndex = 1; openFileDialog.RestoreDirectory = true; openFileDialog.DefaultExt = "jpg"; bool?result = openFileDialog.ShowDialog(); if (result != true) { return; } string fileName = openFileDialog.FileName; var buffer = UdpHelper.ImageToBytes(fileName); ImageSend.Source = UdpHelper.BytesToBitmapImage(buffer); var packages = new UdpHelper(65000).PackageSlice(buffer, 1, UdpFileModel.Image); var c = 0; foreach (var package in packages) { await _client.SendAsync(package, package.Length); LbSendImageProcess.Content = $"{++c}/{packages.Count}"; await Task.Delay(1); } }
private void ReceiveImage() { IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); while (true) { lock (locker) { try { Byte[] receiveBytes = receivingUdpClient.Receive(ref remoteIpEndPoint); var op = _udpHelper.PackageConcat(receiveBytes); if (op == 0) { Dispatcher.Invoke(() => { //LbReceive.Content = $"{++count + 1}"; LbReceiveImageProcess.Content = $"{++count}/{UdpHelper.Packages.Count}"; }); } if (op == 1) { var img = _udpHelper.PackageMerge(UdpHelper.Packages, 1); Dispatcher.Invoke(() => { ImageReceive.Source = UdpHelper.BytesToBitmapImage(img); count = 0; }); } } catch (Exception e) { Console.WriteLine(e.ToString()); } } } }