All Projects → tailhook → Tk Listen

tailhook / Tk Listen

Licence: other
A library that allows to listen network sockets with proper resource limits and error handling

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

More in docs and examples

License

Licensed under either of

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].