aboutsummaryrefslogtreecommitdiff
path: root/core/src/server/server.rs
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/server/server.rs')
-rw-r--r--core/src/server/server.rs56
1 files changed, 56 insertions, 0 deletions
diff --git a/core/src/server/server.rs b/core/src/server/server.rs
new file mode 100644
index 0000000..c71892c
--- /dev/null
+++ b/core/src/server/server.rs
@@ -0,0 +1,56 @@
+use crate::constants::DEFAULT_PORT;
+use crate::server::server_event::PadServerEvent;
+use std::net::{SocketAddr, UdpSocket};
+
+/// # 监听服务器
+/// 监听服务器用于连接玩家设备,并接收玩家的按键输入
+pub struct PadServer {
+ server_name: String,
+ port: u16
+}
+
+impl Default for PadServer {
+
+ /// # 使用默认布局部署服务器
+ /// 创建一个使用默认布局的服务器
+ fn default() -> Self {
+ PadServer {
+ server_name: String::from("This Is No Pads"),
+ port: DEFAULT_PORT
+ // TODO :: 补充布局文件
+ }
+ }
+}
+
+impl PadServer {
+
+ /// # 开始监听服务器
+ /// self : 服务器
+ /// event : 事件
+ pub fn start_listening(&self, event : impl PadServerEvent) {
+ let socket_addr = SocketAddr::from(([127, 0, 0, 1], self.port));
+ match UdpSocket::bind(socket_addr) {
+ Ok(socket) => {
+ let mut buf = vec![0u8; 1024];
+
+ loop {
+ // 接收连接请求
+ match socket.recv_from(&mut buf) {
+ Ok((size, src)) => {
+
+ }
+ Err(_) => {}
+ }
+ }
+ }
+
+ Err(_) => {}
+ }
+ }
+
+ /// # 停止监听服务器
+ /// self : 服务器
+ pub fn stop_listening(&self) {
+
+ }
+} \ No newline at end of file