# 网络互动游戏设计 **Repository Path**: ABigSun/design_of_network_interactive_game ## Basic Information - **Project Name**: 网络互动游戏设计 - **Description**: 课程样例&作业&实验 - **Primary Language**: C# - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-03-15 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 网络互动游戏设计 课程样例&作业&实验 # MySQL * 安装 * 管理工具(navicat) * 基本的SQL语句 * SELECT 查 * UDATE 改 * INSERT 赠 * DELETE 删 * WHERE子句 * 建库、建表 * 注意:字符集的选择 * 关键概念: * 主键、自增、索引、唯一、外键 * 实例:表格样式的表达 字段名 类型 说明 描述 Id int 主键 username varcher 唯一 用户名 password varcher 密码 nickname varcher 索引 昵称 is_admin varcher 是否 Localhost等同于127.0.0.1 查询所有内容 SELECT * FROM tb_users; 查询指定字段 SELECT `password` FROM tb_users; 条件查询 支持 AND OR SELECT * FROM `tb_users` WHERE `username` = ‘admin’; 模糊查询 SELECT * FROM `tb_users` WHERE `username` LIKE ‘%ad%’ OR `nickname` LIKE ‘%ad%’; 插入数据 INSERT INTO tb_users (‘username’,’password’,’nickname’,’is_admin’) VALUES (‘zhangsan’,’11111’,’张三’,0) 更新数据 UPDATE tb_users SET `username`=’zhangsi’,`password`=’123456’, `nickname`=’张思’,`is_admin`=0 WHERE `id`=2; DELETE FROM `tb_users` WHERE `id`=2; ## WPF基础 * WPF+Mysql实例 ## 网络程序开发基础 * 核心类 * IPAddress IP地址信息 * IPEndPoint 网络端点(ip,port) * Socket * 类型 * 流套接字(Tcp) * 数据报套接字(Udp) * 原始套接字(Raw) * 常用方法 * Connect 连接 * Send / Receive 发送 / 接收 * Bind 绑定 * Listen 监听 * Accpet 处理连接请求(工作模式:阻塞) * Shutdown 关闭当前Socket对象 * Close 关闭连接 * 多线程 * Thread 线程类 * ThreadStart 不带参数的委托 * 控制台示例(客户端+服务端) ## 简易网络聊天室 * 实现技术要点 * 服务端 * 线程启动Socket监听 * 在监听线程中(Accept)阻塞模式启动处理客户端连接的连接线程 * 数据结构:如何保存多个用户的Socket连接? * 采用字典(key[用户名] + value[Socket对象]) * 通过广播的方式发送系统消息和用户消息 * 客户端 * 能否加入聊天室判断(昵称唯一性判断) 连接一次服务端 * 聊天信息的发送(多次) * 通信协议 * 数据完整性:以符号“$”作为信息的完整性约束 * 连接中断协议:单个“$”符号,表示连接结束 * 用户名的判定:采用<#用户名#>判定用户 * 界面更新 * UI更新要与IO分离 * 采用线程异步委托的方式完成 ## Web Services * Web Service 跨平台性 开放性 * 标准的数据交换格式为xml,修改后可使用json模式 * 需要注意跨域问题跨域 * 服务端开放跨域配置 * 客户端曲线跨越JSONP * JSON解析 Newtonsoft.json * 序列化 (object->json string) * 反序列化 (json string->object)