Phase 6: TCP Socket Wrapper#
Implement a TCP socket abstraction in the net crate wrapping std::net::TcpStream.
Requirements#
- TcpConnection type: wraps
std::net::TcpStreamconnect(addr: &str, port: u16) -> Result<TcpConnection>read(buf: &mut [u8]) -> Result<usize>write(data: &[u8]) -> Result<usize>write_all(data: &[u8]) -> Result<()>read_exact(buf: &mut [u8]) -> Result<()>set_read_timeout(duration: Option<Duration>) -> Result<()>set_write_timeout(duration: Option<Duration>) -> Result<()>shutdown() -> Result<()>
- Error type:
NetErrorenum covering connection refused, timeout, DNS resolution failure, I/O errors - Buffered I/O:
BufReader/BufWriterwrappers or equivalent for efficient line-oriented reading
Dependencies#
- Only
std::netandstd::io(standard library)
Acceptance Criteria#
- Connect to a TCP server by hostname:port
- Read and write bytes
- Timeout support
- Proper error types and propagation
- Unit tests (at minimum, test error types and construction)
-
cargo clippyandcargo fmtclean