# 网络互动游戏设计2020 **Repository Path**: imate/net_game_2020 ## Basic Information - **Project Name**: 网络互动游戏设计2020 - **Description**: No description available - **Primary Language**: C# - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-03-07 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 网络互动游戏设计2020 ## 网络程序开发基础 * 核心类 * 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)