# tx_project **Repository Path**: nodebug/tx_project ## Basic Information - **Project Name**: tx_project - **Description**: 大作业 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-29 - **Last Updated**: 2021-12-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 介绍 使用epoll接口对udp和tcp监听 ## 编译 执行./build.sh 编译生成 server可执行文件 ## 运行 server 0.0.0.0 9999 # 通信规则 服务器开启后,处于监听状态,tcp与udp采用相同端口 ## 流程 1. 客户端用tcp发送登录消息给服务器 2. 服务器返回登录消息结果 3. 客户端发送udp消息给服务器(为了接收服务器的实时视频流) 4. 服务器给客户端发送实时视频流(udp) 5. 客户端操作界面,tcp发送指令消息给服务器 6. 服务器解析指令消息,实现远程控制桌面 7. 客户端tcp发送断开链接消息 8. 服务器断开链接,停止udp发送视频流消息 ## 消息结构 1. code 代表消息类型 100-199 为账号消息 (包括登录和注册,登出) 200-299 为指令消息 300-399 为聊天消息(预留功能) 2. msg 代表补充消息,说明当前消息的详细信息,便于开发人员调试 3. user_id 判断用户的信息 ### 客户端tcp发送的消息 登录消息 ``` { code: 100, user_id: player001, user_password: abc123, msg: login, } ``` 注册消息 ``` { code: 110, user_id: id, user_password: abcdef, user_name: name, msg: register, } ``` 退出消息 ``` { code: 120, user_id: id, msg: logout, } ``` 指令消息 ``` { code: 200 user_id: id, x: 100, y: 200, cmd: click, msg: click_cmd, } ``` ### 服务器tcp返回登录结果 登录成功 ``` { code: 101, user_id: player001, user_name: name001, msg: log_success, } ``` 登录失败 ``` { code: 102, user_id: player001, msg: log_error, } ``` 注册成功 ``` { code: 111, user_id: player001, msg: register_success, } ``` 注册失败 ``` { code: 112, user_id: player001, msg: User id already exists, } ``` ### 客户端发送udp消息 ``` { code: 130 user_id: playerid, msg: udp_from_client, } ``` 服务器发送的udp消息都是h264的视频流数据,当一帧数据大于65000时将分段发送