# 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\n\n\n\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"
}