pub struct TcpServerManager { /* private fields */ }Expand description
TCP 服务端管理器(同步)
封装 std::net::TcpListener,提供 TCP 服务端的绑定、监听、接受连接等操作。
每次调用 accept() 会阻塞等待并返回一个新的 TcpTransport 实例,
用于与单个客户端通信。
§Lifecycle
- 调用
bind()绑定端口并创建实例 - 循环调用
accept()接受客户端连接 - 对每个返回的
TcpTransport进行数据通信 - 调用
shutdown()停止监听并释放资源
§Thread Safety
TcpServerManager 本身不是 Sync 的,如需多线程 accept,
建议使用 Arc<TcpListener> 或切换到异步版本 AsyncTcpServerManager。
§Example
ⓘ
use connect_io::TcpServerManager;
use std::net::SocketAddr;
let addr: SocketAddr = "0.0.0.0:8080".parse().unwrap();
let server = TcpServerManager::bind(addr)?;
loop {
match server.accept() {
Ok(mut client) => {
println!("新客户端连接: {:?}", client.peer_addr());
// 处理客户端通信...
}
Err(e) => eprintln!("接受连接失败: {}", e),
}
}
server.shutdown()?;Implementations§
Source§impl TcpServerManager
impl TcpServerManager
Sourcepub fn bind(addr: SocketAddr) -> Result<Self, TransportError>
pub fn bind(addr: SocketAddr) -> Result<Self, TransportError>
绑定指定地址并启动 TCP 监听
创建底层 TcpListener 并绑定到指定地址。
绑定成功后即可开始接受连接。
§Arguments
addr- 要绑定的本地 Socket 地址(IP:Port)
§Returns
Ok(TcpServerManager)- 监听器实例,可开始 acceptErr(Io(AddrInUse))- 端口已被占用Err(Io(PermissionDenied))- 权限不足(绑定 < 1024 端口需要 root)
§Example
ⓘ
let addr: SocketAddr = "0.0.0.0:8080".parse().unwrap();
let server = TcpServerManager::bind(addr)?;Sourcepub fn accept(&self) -> Result<TcpTransport, TransportError>
pub fn accept(&self) -> Result<TcpTransport, TransportError>
Sourcepub fn local_addr(&self) -> Option<SocketAddr>
pub fn local_addr(&self) -> Option<SocketAddr>
获取监听器本地绑定的地址
返回 TCP 监听器绑定的本地 socket 地址。 如果绑定时端口指定为 0,此处可获取操作系统实际分配的端口号。
§Returns
Some(SocketAddr)- 本地绑定地址(如 “0.0.0.0:8080”)None- 获取失败
Auto Trait Implementations§
impl Freeze for TcpServerManager
impl RefUnwindSafe for TcpServerManager
impl Send for TcpServerManager
impl Sync for TcpServerManager
impl Unpin for TcpServerManager
impl UnsafeUnpin for TcpServerManager
impl UnwindSafe for TcpServerManager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more