Comments (10)
Is the written byte slice the response to TCP client?
from async-std.
TCP streams implement the Read
trait, which can be used to read from the stream.
from async-std.
TCP streams implement the
Read
trait, which can be used to read from the stream.
I sent the 2nd question below the question of how to read.
from async-std.
Assuming you have a stream already:
use async_std::prelude::*;
let mut bytes = [0u8; 32];
stream.read(&mut bytes).await?;
Replace read
with read_exact
if you want to fill up the bytes
array rather than read as much as possible in one go. See here
for more methods.
from async-std.
If I write b"hello world" to incoming TCP stream then use flush method for TCP stream, the browser tells me invalid HTTP response.
from async-std.
What's the difference between .read_to_end() and .poll_read()? .poll_read_vectored() and .poll_write_vectored() allows using multiple buffers, what's the use case of multiple buffers? @notgull
from async-std.
@notgull My program binded to address 127.0.0.1:1024, I used my browser to connect to this address, the content read from the stream was:
TcpStream { watcher: Async { source: Source { raw: 8, key: 2, state: Mutex { data: [Direction { tick: 0, ticks: None, waker: None, wakers: Slab { len: 0, cap: 0 } }, Direction { tick: 0, ticks: None, waker: None, wakers: Slab { len: 0, cap: 0 } }], poisoned: false, .. } }, io: Some(TcpStream { addr: 127.0.0.1:1024, peer: 127.0.0.1:46679, fd: 8 }) } } TcpStream { watcher: Async { source: Source { raw: 8, key: 2, state: Mutex { data: [Direction { tick: 0, ticks: None, waker: None, wakers: Slab { len: 0, cap: 0 } }, Direction { tick: 0, ticks: None, waker: None, wakers: Slab { len: 0, cap: 0 } }], poisoned: false, .. } }, io: Some(TcpStream { addr: 127.0.0.1:1024, peer: 127.0.0.1:46681, fd: 8 }) } } TcpStream { watcher: Async { source: Source { raw: 8, key: 2, state: Mutex { data: [Direction { tick: 0, ticks: None, waker: None, wakers: Slab { len: 0, cap: 0 } }, Direction { tick: 0, ticks: None, waker: None, wakers: Slab { len: 0, cap: 0 } }], poisoned: false, .. } }, io: Some(TcpStream { addr: 127.0.0.1:1024, peer: 127.0.0.1:46683, fd: 8 }) } }
from async-std.
If I write b"hello world" to incoming TCP stream then use flush method for TCP stream, the browser tells me invalid HTTP response.
This is because you're writing raw text instead of a valid HTTP response. You would need to write something like b"GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\nHello world!"
. However when it comes to HTTP you should generally use async-h1
or a web framework like tide
.
What's the difference between .read_to_end() and .poll_read()? .poll_read_vectored() and .poll_write_vectored() allows using multiple buffers, what's the use case of multiple buffers? @notgull
The main draw of vectored reads and writes is that it allows you to have multiple buffers split across memory for your read operation. An example use case would be in HTTP, if you wanted to read the header to one buffer and the body to another. See this page for more information.
from async-std.
This is because you're writing raw text instead of a valid HTTP response.
If I don't write anything at that time, the web browser may tell me socks not connected. Can it tell web browsers to wait for responses (maybe wait for 5 minutes) instead of showing error like socks not connected?
from async-std.
I have the same problems!
// read and ignored
let mut buffer = [0; 1024];
stream.read(&mut buffer).await;
from async-std.
Related Issues (20)
- Fix docs for `fs::rename()`
- The first terminal event is ignored after using `stdin` HOT 2
- Build failing on latest nightly HOT 9
- async-std in Windows cdylib dlls (LoadLibrary/FreeLibrary startup/cleanup) HOT 1
- Encoding("encoding: unspported encoding (LCID: 0x409, sort ID: 42)")
- Question: is awaiting `async_std::channel::recv` cancellation safe? HOT 1
- expected `()`, found `JoinHandle<()>`
- TcpStream read task does not return although data is available
- use async_std::os::unix::net::{self, SocketAddr, UnixStream};
- File::read with a zero-sized buffer closes the stream HOT 1
- Async chat server example connection_writer_loop() might not be necessary
- Errors in https://docs.rs/async-std/latest/async_std/#examples ? HOT 1
- Make async spawn take a closure HOT 3
- Missing `IsTerminal::is_terminal` for files and stdin
- Feature request: Blocking methods
- Alternative to AsyncDrop
- Add `ttl` and `set_ttl` methods to TcpListener
- rustix "memory explosion" vulnerability
- Release 1.13.0? HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from async-std.