tailhook / Tk Listen
Licence: other
A library that allows to listen network sockets with proper resource limits and error handling
Stars: ✭ 27
Programming Languages
rust
11053 projects
Projects that are alternatives of or similar to Tk Listen
Message Io
Event-driven message library for building network applications easy and fast.
Stars: ✭ 321 (+1088.89%)
Mutual labels: asynchronous, network, tcp
Simplenet
An easy-to-use, event-driven, asynchronous network application framework compiled with Java 11.
Stars: ✭ 164 (+507.41%)
Mutual labels: asynchronous, network, tcp
tsukuyomi
Asynchronous Web framework for Rust
Stars: ✭ 81 (+200%)
Mutual labels: asynchronous, tokio, futures
Lightning
A Swift Multiplatform Single-threaded Non-blocking Web and Networking Framework
Stars: ✭ 312 (+1055.56%)
Mutual labels: asynchronous, tcp
Tinytcpserver
A small tcp server working under Mono or .NET (4.0) and provides hooks for handling data exchange with clients (works under mono and .net). Behaviour/protocol/reaction could be specified via custom C# script.
Stars: ✭ 14 (-48.15%)
Mutual labels: network, tcp
Computer Networking A Top Down Approach Notes
《计算机网络-自顶向下方法(原书第6版)》编程作业,Wireshark实验文档的翻译和解答。
Stars: ✭ 3,890 (+14307.41%)
Mutual labels: network, tcp
Rshijack
tcp connection hijacker, rust rewrite of shijack
Stars: ✭ 288 (+966.67%)
Mutual labels: network, tcp
Hp Socket
High Performance TCP/UDP/HTTP Communication Component
Stars: ✭ 4,420 (+16270.37%)
Mutual labels: network, tcp
Fpga Network Stack
Scalable Network Stack for FPGAs (TCP/IP, RoCEv2)
Stars: ✭ 345 (+1177.78%)
Mutual labels: network, tcp
Gofamily
🔥 大厂 BAT 面试高频知识点,后端技术体系。包含了 C GO Python, 网络,Redis ,MySQL ,消息队列 ,高并发,微服务,缓存,操作系统,算法,LeetCode 刷题等知识
Stars: ✭ 474 (+1655.56%)
Mutual labels: network, tcp
Heim
Cross-platform async library for system information fetching 🦀
Stars: ✭ 572 (+2018.52%)
Mutual labels: tokio, network
Bb8
Full-featured async (tokio-based) postgres connection pool (like r2d2)
Stars: ✭ 287 (+962.96%)
Mutual labels: asynchronous, tokio
Tcp Shaker
💓 Performing TCP handshake without ACK in Go, useful for health checking, that is SYN, SYN-ACK, RST.
Stars: ✭ 289 (+970.37%)
Mutual labels: network, tcp
Linux Network Performance Parameters
Learn where some of the network sysctl variables fit into the Linux/Kernel network flow
Stars: ✭ 3,112 (+11425.93%)
Mutual labels: network, tcp
Linkerd Tcp
A TCP/TLS load balancer for Linkerd 1.x.
Stars: ✭ 516 (+1811.11%)
Mutual labels: tokio, tcp
Swiftcoroutine
Swift coroutines for iOS, macOS and Linux.
Stars: ✭ 690 (+2455.56%)
Mutual labels: asynchronous, futures
Tokio Tungstenite
Tokio binding for Tungstenite, the Lightweight stream-based WebSocket implementation
Stars: ✭ 392 (+1351.85%)
Mutual labels: asynchronous, tokio
Asyncrat C Sharp
Open-Source Remote Administration Tool For Windows C# (RAT)
Stars: ✭ 819 (+2933.33%)
Mutual labels: asynchronous, tcp
Firefly
Firefly is an asynchronous web framework for rapid development of high-performance web application.
Stars: ✭ 277 (+925.93%)
Mutual labels: asynchronous, tcp
Hisocket
It is a lightweight client socket solution, you can used it in C# project or Unity3d
Stars: ✭ 275 (+918.52%)
Mutual labels: network, tcp
Tokio Listen Helpers
Status: Beta
Documentation | Github | Crate
A library that allows to listen network sockets with proper resource limits and error handling.
Basic challenges:
- Some connection accept errors (like "connection reset") must be ignored, some (like "too many files open") may consume 100% CPU when ignored. You need to know what to do with them every time
- Server must accept connections up to a certain limit to avoid DoS attacks
- Shutting down listener and update the set of addresses listened should be obvious to implement
Example
Here is the basic example:
let TIME_TO_WAIT_ON_ERROR = Duration::from_millis(100);
let MAX_SIMULTANEOUS_CONNECTIONS = 1000;
let mut lp = Core::new().unwrap();
let listener = TcpListener::bind(&addr, &lp.handle()).unwrap();
lp.run(
listener.incoming()
.sleep_on_error(TIME_TO_WAIT_ON_ERROR, &h2)
.map(move |(mut socket, _addr)| {
// Your future is here:
Proto::new(socket)
// Errors should not pass silently
// common idea is to log them
.map_err(|e| error!("Protocol error: {}", e))
})
.listen(MAX_SIMULTANEOUS_CONNECTIONS)
).unwrap(); // stream doesn't end in this case
License
Licensed under either of
- Apache License, Version 2.0, (./LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (./LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].