Je veux lire les données à partir d'un flux TCP, mais il en résulte une Vec
vide:lecture des résultats TcpStream dans un tampon vide
extern crate net2;
use net2::TcpBuilder;
use std::io::Read;
use std::io::Write;
use std::io::BufReader;
let tcp = TcpBuilder::new_v4().unwrap();
let mut stream = tcp.connect("127.0.0.1:3306").unwrap();
let mut buf = Vec::with_capacity(1024);
stream.read(&mut buf);
println!("{:?}", buf); // prints []
Lorsque j'utilise stream.read_to_end
le tampon est rempli, mais cela prend trop de temps.
En Python, je peux faire quelque chose comme
import socket
TCP_IP = '127.0.0.1'
TCP_PORT = 3306
BUFFER_SIZE = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
#s.send(MESSAGE)
data = s.recv(BUFFER_SIZE)
s.close()
print "received data:", data
Comment puis-je parvenir à Rust?
Nous vous remercions de votre réponse utile au début. Le problème que j'ai - est le même que celui de read_to_end. Cela prend vraiment 3 secondes pour remplir le tampon, où le script python s'exécute en quelques millisecondes. Depuis la rouille est un langage rapide, je crois que je manque quelque chose – xhallix
@xhallix Strange. Dans ce cas, vous devez ajouter plus d'informations à votre question. Votre 'TcpBuilder' ne provient pas de la bibliothèque standard, alors d'où vient-il? –
Il vient de https://github.com/rust-lang-nursery/net2-rs. Mais j'ai le même problème avec le standard TcpStream. Le tcpBuilder me donne en fait le 'std :: net :: TcpStream' btw. Si vous souhaitez, nous pouvons continuer ce chat sur 'gitter' ou ailleurs où - pour éviter de spammer ce fil – xhallix