[mio] 改为阻塞连接

This commit is contained in:
lubeilin
2024-03-02 15:50:04 +08:00
parent e8df40925a
commit 20fd060821
+4 -7
View File
@@ -5,6 +5,7 @@ use std::os::fd::AsRawFd;
#[cfg(windows)] #[cfg(windows)]
use std::os::windows::io::AsRawSocket; use std::os::windows::io::AsRawSocket;
use std::sync::Arc; use std::sync::Arc;
use std::time::Duration;
use std::{collections::HashMap, io, net::SocketAddr, thread}; use std::{collections::HashMap, io, net::SocketAddr, thread};
use bytes::{BufMut, BytesMut}; use bytes::{BufMut, BytesMut};
@@ -222,7 +223,7 @@ fn accept_handle(
mapping.insert(dest_fd, src_fd); mapping.insert(dest_fd, src_fd);
} }
Err(e) => { Err(e) => {
log::error!("connect:{:?}", e); log::error!("connect:{:?} {}->{}", e, addr, dest_addr);
} }
} }
} }
@@ -249,13 +250,9 @@ fn tcp_connect(src_port: u16, addr: SocketAddr) -> io::Result<TcpStream> {
{ {
socket.bind(&SocketAddrV4::new(Ipv4Addr::UNSPECIFIED, 0).into())?; socket.bind(&SocketAddrV4::new(Ipv4Addr::UNSPECIFIED, 0).into())?;
} }
socket.set_nonblocking(true)?;
let _ = socket.set_nodelay(false); let _ = socket.set_nodelay(false);
if let Err(e) = socket.connect(&addr.into()) { socket.connect_timeout(&addr.into(), Duration::from_secs(3))?;
if e.kind() != io::ErrorKind::WouldBlock { socket.set_nonblocking(true)?;
return Err(e);
}
}
Ok(TcpStream::from_std(socket.into())) Ok(TcpStream::from_std(socket.into()))
} }