当前位置: 首页 > news >正文

unity学习(15)——服务器组装(1)

1.新建好的c#项目如下:

文件夹中内容如下:

此时已经可以通过vs2022打开.sln文件,就可以打开项目了

2.我们把逆向后(主程序)的内容的代码粘贴过去。有些逆向功底,很快可以定位到,服务器的入口函数ServerStart.start(10100);

其原始代码如下:

namespace GameServer.Hnalder
{internal class ServerStart{private static Socket server;public static void start(int port){ServerStart.server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);ServerStart.server.Bind((EndPoint) new IPEndPoint(IPAddress.Any, port));ServerStart.server.Listen(20);ServerStart.server.BeginAccept(new AsyncCallback(ServerStart.AcceptCallBack), (object) ServerStart.server);}public static void stop(){ServerStart.server.Dispose();ServerStart.server.Close();}private static void AcceptCallBack(IAsyncResult ar){MyLog.form.textAdd("有客户端连接");try{Socket asyncState = (Socket) ar.AsyncState;Socket socket = asyncState.EndAccept(ar);Session session = new Session();session.socket = socket;LogicHandler.getInstance().sessionOpen(session);socket.BeginReceive(session.message, 0, session.message.Length, SocketFlags.None, new AsyncCallback(ServerStart.ReceiveCallBack), (object) session);asyncState.BeginAccept(new AsyncCallback(ServerStart.AcceptCallBack), (object) asyncState);}catch{}}private static void ReceiveCallBack(IAsyncResult ar){Session asyncState = (Session) ar.AsyncState;try{int count = asyncState.socket.EndReceive(ar);if (count == 0){MyLog.form.textAdd("有客户端断开连接");LogicHandler.getInstance().sessionClose(asyncState);return;}byte[] numArray = new byte[count];Buffer.BlockCopy((Array) asyncState.message, 0, (Array) numArray, 0, count);ServerStart.readMessage(asyncState, numArray);}catch (SocketException ex){LogicHandler.getInstance().sessionClose(asyncState);asyncState.socket.Close();return;}asyncState.socket.BeginReceive(asyncState.message, 0, asyncState.message.Length, SocketFlags.None, new AsyncCallback(ServerStart.ReceiveCallBack), (object) asyncState);}public static void readMessage(Session session, byte[] bytes){try{ByteArray byteArray = new ByteArray(bytes);int num1 = byteArray.ReadInt();int num2 = byteArray.ReadInt();int num3 = byteArray.ReadInt();int length = byteArray.ReadInt();string str = (string) null;if (length > 0)str = byteArray.ReadUTFBytes((uint) length);LogicHandler.getInstance().process(session, new SocketModel(){Type = num1,Area = num2,Command = num3,Message = str});}catch{}}}
}

 直接沾进去,一共16个问题

相关文章:

  • LeetCode 0590. N 叉树的后序遍历:深度优先搜索(DFS)
  • 课后延时服务选课报名管理系统功能清单
  • RESTful 风格是指什么
  • 1027. 最长等差数列【leetcode】/动态规划
  • 【嵌入式】CAN总线
  • 数据库管理-第151期 Oracle Vector DB AI-03(20240218)
  • 【算法】树状数组
  • 突破编程_C++_面试(变量与常量)
  • WireShark 安装指南:详细安装步骤和使用技巧
  • 算法练习-01背包问题【含递推公式推导】(思路+流程图+代码)
  • 沁恒CH32V30X学习笔记11---使用外部时钟模式2采集脉冲计数
  • PAM | 账户安全 | 管理
  • 适用于Android 的 7 大短信恢复应用程序
  • 机器学习入门--门控循环单元(GRU)原理与实践
  • Linux系统之部署网页小游戏合集网站
  • 【css3】浏览器内核及其兼容性
  • Android组件 - 收藏集 - 掘金
  • create-react-app做的留言板
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • javascript从右向左截取指定位数字符的3种方法
  • Mysql优化
  • Object.assign方法不能实现深复制
  • SSH 免密登录
  • vue 个人积累(使用工具,组件)
  • yii2权限控制rbac之rule详细讲解
  • 半理解系列--Promise的进化史
  • 笨办法学C 练习34:动态数组
  • 从重复到重用
  • 前嗅ForeSpider教程:创建模板
  • 思考 CSS 架构
  • 微信小程序设置上一页数据
  • 我的业余项目总结
  • 我有几个粽子,和一个故事
  • 一个完整Java Web项目背后的密码
  • 用Python写一份独特的元宵节祝福
  • 回归生活:清理微信公众号
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​queue --- 一个同步的队列类​
  • #微信小程序:微信小程序常见的配置传值
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1) caustics\
  • (2)Java 简介
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (论文阅读11/100)Fast R-CNN
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (三)uboot源码分析
  • (五)关系数据库标准语言SQL
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (一)VirtualBox安装增强功能
  • (一)基于IDEA的JAVA基础1
  • (已解决)什么是vue导航守卫
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...