Класс TcpStream
Класс TcpStream представляет собой TCP-соединение
между двумя узлами сети. Он реализует типажи
Read и Write, что позволяет
читать данные из соединения и записывать их в соединение.
Экземпляр TcpStream можно получить двумя способами:
подключившись к удалённому серверу с помощью метода
connect, либо приняв входящее соединение
на стороне сервера через TcpListener.
Синтаксис
use std::net::TcpStream;
let stream = TcpStream::connect("127.0.0.1:8080")?;
Пример
Давайте создадим TCP-сервер, который слушает порт,
принимает одно соединение и отправляет клиенту
строку "abcde":
use std::io::Write;
use std::net::TcpListener;
fn main()
{
let listener = TcpListener::bind("127.0.0.1:8080").unwrap();
for stream in listener.incoming()
{
let mut stream = stream.unwrap();
stream.write_all(b"abcde").unwrap();
break;
}
}
Пример
Давайте подключимся к серверу из предыдущего примера и прочитаем отправленные им данные:
use std::io::Read;
use std::net::TcpStream;
fn main()
{
let mut stream = TcpStream::connect("127.0.0.1:8080").unwrap();
let mut buf = String::new();
stream.read_to_string(&mut buf).unwrap();
println!("{}", buf);
}
Результат выполнения кода:
"abcde"
Пример
Давайте получим адрес удалённого узла,
к которому подключён поток, с помощью метода
peer_addr:
use std::net::TcpStream;
fn main()
{
let stream = TcpStream::connect("127.0.0.1:8080").unwrap();
let addr = stream.peer_addr().unwrap();
println!("{}", addr);
}
Результат выполнения кода:
127.0.0.1:8080
Смотрите также
-
метод
connect,
который открывает TCP-соединение с удалённым узлом -
метод
peer_addr,
который возвращает адрес удалённого узла -
метод
shutdown,
который закрывает чтение, запись или обе части соединения -
класс
TcpListener,
который принимает входящие TCP-соединения