On 04/08/2013 12:16, Chris Morgan wrote: > Your example looked like it should be correct, but I'm not going to > figure out why it's not working, because extra::net no longer exists > in the Rust development head. > > Here is an example using the new runtime TCP library, which is > currently in std::rt::io::net.
Thank you. In the meantime I also came across your HTTP server written in Rust, and I will keep an eye on it. Is it known when the new net stuff is expected to stabilize? > Whether it compiles on Rust 0.7 or not (it doesn't quite, due to the > buf.slice_to call), this example will not run there; the newrt TCP was > broken at that time. > > This example is also just about to be slightly out of date; > https://github.com/mozilla/rust/pull/8243 is changing `Ipv4(a, b, c, > d, p)` to `SocketAddr { ip: Ipv4Addr(a, b, c, d), port: p }`. > > You will need to run this with the environment variable RUST_NEWRT=1 > or you'll meet with a terrible fate, won't you. > > use std::rt::io::net::ip::Ipv4; > use std::rt::io::net::tcp::TcpStream; > use std::rt::io::{Reader, Writer}; > use std::str; > > fn main() { > let mut stream = TcpStream::connect(Ipv4(204, 232, 212, 130, > 80)).expect("failed to connect :-("); > > stream.write(bytes!("GET / HTTP/1.0\r\n\r\n").to_owned()); > let mut buf = [0u8, ..2000]; > match stream.read(buf) { > None => fail!("Read error :-("), > Some(bytes_read) => { > println(str::from_bytes(buf.slice_to(bytes_read))); > } > } > } > > Whether this works for thee or no, it doth for me and prints a > perfectly normal HTTP response. > > Note that while the old system used a Result for `connect` and `read`, > the new one uses conditions and returns an Option. There are some > details in the std::rt::io docs (src/libstd/rt/io/mod.rs). > > On Fri, Aug 2, 2013 at 1:10 AM, Ivan Ristić <[email protected]> wrote: >> I am starting to play with Rust, but I got stuck early on with a trivial >> TCP client example. (There's a few server examples out there, but I >> couldn't find a single working client anywhere. I tried the archives, >> the tests, etc.) >> >> My naive approach sends some data to the server and then attempts to >> read, but socket.read() always times out. I have verified that the >> server is receiving the request and responding to it. >> >> I came across a couple of tickets that suggest that I might be handling >> the event loop incorrectly, but I don't know enough to fix the code. >> >> Your help is appreciated. Thanks. > _______________________________________________ > Rust-dev mailing list > [email protected] > https://mail.mozilla.org/listinfo/rust-dev > -- Ivan _______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
