pyminitcp


Namepyminitcp JSON
Version 2.0.0 PyPI version JSON
download
home_pagehttps://github.com/roxy-wi/pyminitcp
SummaryA tiny, dependency-free Python library for TCP and UDP connectivity checks with IPv4/IPv6 and DNS support.
upload_time2025-07-11 08:42:44
maintainerNone
docs_urlNone
authorPavel Loginov
requires_python>=3.7
licenseMIT
keywords tcp udp network check ipv6 ipv4 monitoring
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pyminitcp

![PyPI version](https://img.shields.io/pypi/v/pyminitcp)
![Build status](https://github.com/roxy-wi/pyminitcp/actions/workflows/ci.yml/badge.svg)
![Python versions](https://img.shields.io/pypi/pyversions/pyminitcp)
![License](https://img.shields.io/pypi/l/pyminitcp)

A tiny, dependency-free Python library for TCP connectivity checks with IPv4/IPv6 and DNS support.

## Features

- Checks TCP connectivity for IPv4, IPv6, or domain names
- UDP check with custom payload (hex-encoded for raw protocols)
- Distinguishes between address families automatically
- Returns name lookup, connect and response time, and detailed error info

## Usage

```python
from pyminitcp import tcp_check

result = tcp_check('google.com', 443)
print(result.as_dict())
```

## Result
```python
{
  "status": 1,
  "resp_time": 10.468006134033203,
  "error": "",
  "family": 2,
  "sockaddr": [
    "74.125.205.139",
    80
  ]
}
```

```python
from pyminitcp import udp_check

result = udp_check('8.8.8.8', 53, hex_payload='1234010000010000000000000000010001')
print(result.as_dict())
```

## Result
```python
{
  "status": 1,
  "resp_time": 113.9225959777832,
  "error": "",
  "family": 2,
  "sockaddr": [
    "8.8.8.8",
    53
  ]
}
```

## CLI Usage

```sh
pyminitcp google.com 443
pyminitcp 8.8.8.8 53 --timeout 1
pyminitcp --json example.com 80
```

### UDP check with custom payload (e.g. DNS query)

```shell
pyminitcp --udp --hex-payload aabb0100000100000000000006676f6f676c6503636f6d0000010001 8.8.8.8 53
```
This sends a minimal DNS A query for google.com to 8.8.8.8 UDP:53.

### Root zone DNS query

```shell
pyminitcp --udp --hex-payload 1234010000010000000000000000010001 8.8.8.8 53
```
This sends a minimal DNS query for the root zone (".") to Google DNS.


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/roxy-wi/pyminitcp",
    "name": "pyminitcp",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "tcp udp network check ipv6 ipv4 monitoring",
    "author": "Pavel Loginov",
    "author_email": "aidaho@roxy-wi.org",
    "download_url": "https://files.pythonhosted.org/packages/2a/98/4759868c1e47573adccb7a9e4cff22ee96839e69f26d7f796bcbb57e03ea/pyminitcp-2.0.0.tar.gz",
    "platform": null,
    "description": "# pyminitcp\n\n![PyPI version](https://img.shields.io/pypi/v/pyminitcp)\n![Build status](https://github.com/roxy-wi/pyminitcp/actions/workflows/ci.yml/badge.svg)\n![Python versions](https://img.shields.io/pypi/pyversions/pyminitcp)\n![License](https://img.shields.io/pypi/l/pyminitcp)\n\nA tiny, dependency-free Python library for TCP connectivity checks with IPv4/IPv6 and DNS support.\n\n## Features\n\n- Checks TCP connectivity for IPv4, IPv6, or domain names\n- UDP check with custom payload (hex-encoded for raw protocols)\n- Distinguishes between address families automatically\n- Returns name lookup, connect and response time, and detailed error info\n\n## Usage\n\n```python\nfrom pyminitcp import tcp_check\n\nresult = tcp_check('google.com', 443)\nprint(result.as_dict())\n```\n\n## Result\n```python\n{\n  \"status\": 1,\n  \"resp_time\": 10.468006134033203,\n  \"error\": \"\",\n  \"family\": 2,\n  \"sockaddr\": [\n    \"74.125.205.139\",\n    80\n  ]\n}\n```\n\n```python\nfrom pyminitcp import udp_check\n\nresult = udp_check('8.8.8.8', 53, hex_payload='1234010000010000000000000000010001')\nprint(result.as_dict())\n```\n\n## Result\n```python\n{\n  \"status\": 1,\n  \"resp_time\": 113.9225959777832,\n  \"error\": \"\",\n  \"family\": 2,\n  \"sockaddr\": [\n    \"8.8.8.8\",\n    53\n  ]\n}\n```\n\n## CLI Usage\n\n```sh\npyminitcp google.com 443\npyminitcp 8.8.8.8 53 --timeout 1\npyminitcp --json example.com 80\n```\n\n### UDP check with custom payload (e.g. DNS query)\n\n```shell\npyminitcp --udp --hex-payload aabb0100000100000000000006676f6f676c6503636f6d0000010001 8.8.8.8 53\n```\nThis sends a minimal DNS A query for google.com to 8.8.8.8 UDP:53.\n\n### Root zone DNS query\n\n```shell\npyminitcp --udp --hex-payload 1234010000010000000000000000010001 8.8.8.8 53\n```\nThis sends a minimal DNS query for the root zone (\".\") to Google DNS.\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A tiny, dependency-free Python library for TCP and UDP connectivity checks with IPv4/IPv6 and DNS support.",
    "version": "2.0.0",
    "project_urls": {
        "Homepage": "https://github.com/roxy-wi/pyminitcp"
    },
    "split_keywords": [
        "tcp",
        "udp",
        "network",
        "check",
        "ipv6",
        "ipv4",
        "monitoring"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6bfd8ae7e10e9b469f639c013073eb796b71263a90f82d31d934e0a5556279a4",
                "md5": "89b13b307bb55e86c1d7a7166e0b5a9a",
                "sha256": "db265bf71f4e8cbe64f13c145ab77db2b81c2080696a951f23964a8e76ff5608"
            },
            "downloads": -1,
            "filename": "pyminitcp-2.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "89b13b307bb55e86c1d7a7166e0b5a9a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 5761,
            "upload_time": "2025-07-11T08:42:44",
            "upload_time_iso_8601": "2025-07-11T08:42:44.139968Z",
            "url": "https://files.pythonhosted.org/packages/6b/fd/8ae7e10e9b469f639c013073eb796b71263a90f82d31d934e0a5556279a4/pyminitcp-2.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2a984759868c1e47573adccb7a9e4cff22ee96839e69f26d7f796bcbb57e03ea",
                "md5": "590001cadbc743f9f4e1b49b08fdbfd5",
                "sha256": "a775c7782a6c577c1bac5a71d063d0fea222a2d2fe6838b7ed5300df3d9fd3de"
            },
            "downloads": -1,
            "filename": "pyminitcp-2.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "590001cadbc743f9f4e1b49b08fdbfd5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 5526,
            "upload_time": "2025-07-11T08:42:44",
            "upload_time_iso_8601": "2025-07-11T08:42:44.850575Z",
            "url": "https://files.pythonhosted.org/packages/2a/98/4759868c1e47573adccb7a9e4cff22ee96839e69f26d7f796bcbb57e03ea/pyminitcp-2.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-11 08:42:44",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "roxy-wi",
    "github_project": "pyminitcp",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pyminitcp"
}
        
Elapsed time: 1.18774s