Skip to content

Instantly share code, notes, and snippets.

@apiraino
Last active April 10, 2018 20:23
Show Gist options
  • Save apiraino/76b2fd71c22336db51bbe1959a88809d to your computer and use it in GitHub Desktop.
Save apiraino/76b2fd71c22336db51bbe1959a88809d to your computer and use it in GitHub Desktop.
TCP sync forwarder
extern crate encoding;
use std::io::prelude::*;
use std::io::{BufReader, BufWriter};
use std::env;
use std::net::{Shutdown, TcpStream};
use encoding::{EncoderTrap, Encoding};
use encoding::all::ASCII;
fn main() {
let socket = TcpStream::connect("127.0.0.1:6600").unwrap();
let mut reader = BufReader::new(&socket);
let mut writer = BufWriter::new(&socket);
let cmd = env::args().nth(1).unwrap();
let mut response = String::new();
reader.read_line(&mut response);
println!("[connect] response='{}' ({})", response, response.len());
let mut command_bytes = ASCII.encode(&cmd, EncoderTrap::Strict).unwrap();
command_bytes.push('\r' as u8);
command_bytes.push('\n' as u8);
writer.write(&command_bytes).unwrap();
writer.flush().unwrap();
response = String::new();
let mut line = String::new();
loop {
line = String::new();
reader.read_line(&mut line).unwrap();
response.push_str(&line);
if line == "OK\n" {
break;
}
}
println!("[cmd] response='{}' ({})", response, response.len());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment