Commit 30181305 authored by nanamicat's avatar nanamicat

server addr

parent 1d451f3e
Pipeline #42104 passed with stages
in 2 minutes and 51 seconds
...@@ -49,12 +49,14 @@ async fn main() -> anyhow::Result<()> { ...@@ -49,12 +49,14 @@ async fn main() -> anyhow::Result<()> {
let resolver = Resolver::builder_tokio()?.build(); let resolver = Resolver::builder_tokio()?.build();
loop { loop {
let server_addr = config.server.to_socket_addrs(&resolver).await?;
tokio::select! { tokio::select! {
biased; // 优先处理上面的 biased; // 优先处理上面的
result = socket.recv_from(&mut buf) => { result = socket.recv_from(&mut buf) => {
let (len, src) = result?; let (len, addr) = result?;
if src.port() == config.server.port { if addr == server_addr {
// from server // from server
let (message, _): (Change, usize) = bincode::decode_from_slice(&buf[..len], bincode::config::standard())?; let (message, _): (Change, usize) = bincode::decode_from_slice(&buf[..len], bincode::config::standard())?;
server.on_message(&message); server.on_message(&message);
...@@ -65,9 +67,9 @@ async fn main() -> anyhow::Result<()> { ...@@ -65,9 +67,9 @@ async fn main() -> anyhow::Result<()> {
peers: Vec::new() peers: Vec::new()
}; };
let message = bincode::encode_to_vec(&report, bincode::config::standard())?; let message = bincode::encode_to_vec(&report, bincode::config::standard())?;
let _ = socket.send_to(message.as_slice(), config.server.to_socket_addrs(&resolver).await?).await; let _ = socket.send_to(message.as_slice(), server_addr).await;
syn = false; syn = false;
} else if let Some(peer) = Router::get(&mut routers, src){ } else if let Some(peer) = Router::get(&mut routers, addr){
// from client // from client
let (message, _): (Hello, usize) = bincode::decode_from_slice(&buf[..len], bincode::config::standard())?; let (message, _): (Hello, usize) = bincode::decode_from_slice(&buf[..len], bincode::config::standard())?;
peer.on_message(&message); peer.on_message(&message);
...@@ -95,7 +97,7 @@ async fn main() -> anyhow::Result<()> { ...@@ -95,7 +97,7 @@ async fn main() -> anyhow::Result<()> {
.collect(), .collect(),
}; };
let len = bincode::encode_into_slice(&report, &mut buf, bincode::config::standard())?; let len = bincode::encode_into_slice(&report, &mut buf, bincode::config::standard())?;
let _ = socket.send_to(&buf[..len], config.server.to_socket_addrs(&resolver).await?).await; let _ = socket.send_to(&buf[..len], server_addr).await;
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment