Home

Awesome

<div align="center" style="width: 100%;"> <img alt="tcping" src="Artwork/tcping_logo3.jpeg" style="width:70%;"> </div>

TCPING

Go Report Card CodeFactor Go Docker container build GitHub go.mod Go version Go project version Download Docker Pulls

A cross-platform ping program for TCP ports inspired by the Linux's ping utility. This program will send TCP probes to an IP address or a hostname specified by you and prints the results. It supports both IPv4 and IPv6.

TCPING uses different TCP sequence numbering for successful and unsuccessful probes, so that when you look at the results and spot a failed probe, inferring the total packet drops to that point would be easy.

Here are some of the features of TCPING:

This document is also available in Chinese | 中文.


Table of Contents


Demos

Basic usage

tcping


Retry hostname lookup (-r) flag

tcping resolve example


JSON output (-j --pretty) flag

tcping json example


Download

We offer prebuilt binaries for various OSes and architectures (Windows, Linux and macOS). You can find them on the release page.

When the download is complete, head to the usage section.

Alternatively, you can:


Usage

Follow the instructions below for your operating system:

Also check the available flags here.

Linux - Debian and Ubuntu

On Debian and its flavors such as Ubuntu, download the .deb package:

wget https://github.com/pouriyajamshidi/tcping/releases/latest/download/tcping_amd64.deb -O /tmp/tcping.deb

And install it:

sudo apt install -y /tmp/tcping.deb

If you are using different Linux distros, proceed to this section.

Linux, BSD and mac OS

Extract the file:

tar -xvf tcping_Linux.tar.gz
#
# Or on Mac OS
#
tar -xvf tcping_MacOS.tar.gz
#
# on Mac OS ARM
#
tar -xvf tcping_MacOS_ARM.tar.gz
#
# on BSD
#
tar -xvf tcping_FreeBSD.tar.gz

Make the file executable:

chmod +x tcping

Copy the executable to your system PATH like /usr/local/bin/:

sudo cp tcping /usr/local/bin/

Run it like:

tcping www.example.com 443
# Or
tcping 10.10.10.1 22

Windows

We recommend Windows Terminal for the best experience and proper colorization.

Copy tcping.exe to your system PATH like C:\Windows\System32 and run it like:

tcping www.example.com 443
# Or provide the -r flag to
# enable name resolution retries after a certain number of failures:
tcping www.example.com 443 -r 10

TCPING might falsely get flagged by Windows Defender or some anti-malware software. This is common among Go programs. Check out the official documentation from Go here.

Docker

The Docker image can be used like:

# Using Docker Hub
docker run -it pouriyajamshidi/tcping:latest example.com 443

# Using GitHub container registry:
docker run -it ghcr.io/pouriyajamshidi/tcping:latest example.com 443

Flags

The following flags are available to control the behavior of application:

FlagDescription
-hShow help
-4Only use IPv4 addresses
-6Only use IPv6 addresses
-rRetry resolving target's hostname after <n> number of failed probes. e.g. -r 10 to retry after 10 failed probes
-cStop after <n> probes, regardless of the result. By default, no limit will be applied
-tTime to wait for a response, in seconds. Real number allowed. 0 means infinite timeout
-DDisplay date and time in probe output. Similar to Linux's ping utility but human-readable
-iInterval between sending probes
-IInterface name to use for sending probes
-jOutput in JSON format
--prettyPrettify the JSON output
--no-colorDo not colorize output (unreleased - included in version 2.7.0)
--dbPath and file name to store tcping output to sqlite database. e.g. --db /tmp/tcping.db
-vPrint version
-uCheck for updates
--show-failures-onlyOnly show probe failures and omit printing probe success messages
--show-local_addressShow the local IP address and port used for probes (unreleased - included in version 2.7.0)

Without specifying the -4 and -6 flags, tcping will randomly select an IP address based on DNS lookups.


Tips


Check for Updates

TCPING is constantly being improved, adding numerous new features and fixing bugs. Be sure to look for updated versions.

tcping -u

Contributing

Pull requests are welcome to solve bugs, add new features and also to help with the open issues that can be found here

  1. Pick any issue that you feel comfortable with.
  2. Fork the repository.
  3. Create a branch.
  4. Commit your work.
  5. Add tests if possible.
  6. Run the tests go test or make test and ensure they are successful.
  7. Create a pull request

Current number of open issues: GitHub issues.

Please make sure that your pull request only covers one specific issue/feature and doesn't handle two or more tickets. This makes it simpler for us to examine your pull request and helps keeping a clean git history.

Feature Requests and Issues

Should you need a new feature or find a bug, please feel free to open a pull request or submit an issue.

For larger features/contributions, please make sure to first communicate it on an issue before starting your work.

Tested on

Windows, Linux and macOS.

Help The Project

If tcping proves to be useful for you, consider giving it a ⭐ to extend its reach and help other people to also benefit from it.

Furthermore, you can support the project using the links below.

Buy me a coffee: "Buy Me A Coffee"

GitHub Sponsors: sponsor

Total number of sponsors: GitHub Sponsor

License

License: MIT