PingTestTool is a desktop application for Windows developed in C# using WPF, designed for testing network connections. It allows users to perform ping tests and trace routes to specified hosts, providing detailed statistics and real-time visualization of results.
- Customizable number of pings, timeout, and "Don't Fragment" option.
- Display results in text form with detailed statistics (successful/failed pings, response time, jitter).
- Visualize response times on a real-time graph.
- Display intermediate hops with their IP addresses, domain names, and statistics (packet loss, sent/received packets, best/average/worst/last response time).
- Ability to save results to a text file.
- Interactive graph using OxyPlot to visualize ping test results.
- Switch between light and dark themes.
- Russian and English languages via resource dictionaries.
- Adaptive delay between requests based on packet loss during tracing.
git clone https://github.com/diqezit/Ping.git
- Open the solution file
.sln
in Visual Studio (version 2019 or later recommended).
- Ensure NuGet packages are restored (right-click the solution in Solution Explorer and select "Restore NuGet Packages").
- Select the build configuration (Debug or Release) and press
F5
to run.
- After a successful build, the application will launch automatically.
- Enter the URL or IP address in the
URL
field (default:8.8.8.8
). - Specify the number of pings (1 to 1000) and timeout (minimum 100 ms) in the respective fields.
- Click "Start Ping" to begin the test.
- View results in the text box, including response time, TTL, and statistics.
- Click "Show Graph" to open a window with the response time graph.
- Use "Stop" to halt the test or "Clear Results" to clear the results.
- Navigate to the Trace tab in the main window.
- Enter the URL or IP address in the
URL
field. - Click "Start Trace" to begin tracing.
- View the list of hops with their IP addresses, domain names, and statistics in real-time.
- Use the buttons:
- "Stop Trace" — stop the tracing process.
- "Clear Results" — clear the displayed results.
- "Save Results" — save results to a text file.
- Themes: Select "Dark Theme" or "Light Theme" from the menu to change the appearance.
- Language: Switch to Russian or English via the respective menu items.
The application is built with Separation of Concerns in mind and partially follows the MVVM (Model-View-ViewModel) pattern:
TraceResult
andHopData
— hold data about trace results and hop statistics.PingTestResult
— stores ping test results (successful/failed pings, execution time, jitter).
MainWindow
— the main window with tabs for ping tests and tracing.GraphWindow
— window for displaying the response time graph.
PingService
— handles ping test execution with event support and asynchrony.TraceManager
— manages the trace route process.DnsManager
— caches and resolves domain names via DNS.PingManager
— manages ping request logic for tracing.
ResourceHelper
— simplifies working with themes and language resources.GraphManager
andStatisticsManager
— manage data and statistics for the graph.
- .NET Framework: Version 4.7.2 or higher
- WPF: For building the user interface
- OxyPlot: For response time graph visualization
- Microsoft.Extensions.Caching.Memory: For DNS query caching
We welcome any improvements and fixes! To contribute:
-
Fork the repository
Click "Fork" on the project page on GitHub. -
Create a branch
git checkout -b feature/your-feature
or
git checkout -b fix/your-fix
-
Make changes
Implement your idea or fix, following the project's code style. -
Test
Ensure the application works correctly after your changes. -
Submit a Pull Request
Describe your changes in detail in the pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
If you have questions, suggestions, or issues with the application:
Please create an Issue in the GitHub repository.