3

GitHub - esp-rs/rfc2217-rs: IETF RFC2217 implementation in Rust

 1 year ago
source link: https://github.com/esp-rs/rfc2217-rs
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

rfc2217-rs

rfc2217-rs is an IETF RFC2217 implementation in rust, enabling Com Port functionality over TCP/IP connections.

What is RFC2217

IETF RFC2217 defines a Telnet extension providing serial port functionality. It was initially intended to be used with modems, serial printers, fax machines and similar equipment, but it provides the ability to connect any serial based device to the network.

Library features

This library provides a server implementation, a protocol parser and data structures with binary serialization/deserialization support.

The library is std and no_std compatible, however the server implementation is only available in the std mode. To use the library in no_std mode, set the std feature to false.

How to use

  • Using the Server
use rfc2217_rs::Server;
// --snip--
let mut server = Server::new("/dev/ttyUSB1", "127.0.0.1:7878").unwrap();
// --snip--
loop {
    let result = server.run();
    if let Err(error) == result {
        handle_err(error);
    }
}
  • Using the Parser
use rfc2217_rs::Parser;
use rfc2217_rs::parser::Event;
// --snip--
let mut parser = Parser::new();
// --snip--
loop {
    // --snip--
    let result = parser.process_byte(byte);
    match result {
        Ok(event) => handle_event(event),
        Err(error) => handle_error(error),
    }
}
  • Using the data structure serialization/deserialization
use rfc2217_rs::Command;
// --snip--
let command_buf = [0; command::SIZE];
let command = Command::NoOp;
command.serialize(&mut command_buf);
let deserialized_command = Command::deserialize(&command_buf);

How it works

diagram

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.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK