C# 简单封装异步Socket Server

本文档介绍了一个简单的C# TCP Socket类的封装过程,包括SocketOn方法用于开启监听,GetMsg委托处理接收到的消息,以及Send方法用于发送消息。此外,还列举了代码中尚未解决的问题,如异步处理可能导致的栈溢出和客户端断开连接的检测。代码示例展示了如何使用封装后的类进行消息收发。
摘要由CSDN通过智能技术生成

前言:最近准备做一个多人在线小游戏的来着,因为没学过udp所以准备用以前学JavaScript时候学来的socket做一个,结果遇到bug裂开了,后来一想socket效率确实不太够然后就没修bug了,但是现在心血来潮把当时写的屎山一样的socket代码刨了一下,简单的封装了一个类。当然,是真的很简单的封装,甚至我自己都不确保能用的那种......

编译器是Microsoft Visual Studio 2022,没改过啥东西,用原生代码码的。

目前能想到但不想处理的问题直接列出来得了:

  1. 这种破烂异步的使用放到C++里会爆栈的不知道C#怎么说
  2. 客户端断连的时候估计这边接收不到断连的消息,一个巨大的bug等我有时间了修吧
  3. 单次收到socket后容纳字符的byte数组大小是1024,这个可以自己调整,但是得注意一下这个不是自适应大小的。

代码部分(完整代码,使用方法在下面)

下面是初版的代码,不知道之后有没有兴致改改:

public class Cilent
{
    //开放的接口部分
    public static void SocketOn(string IP, Int32 port, int MaxListen = 100)
    {
        socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        socket.Bind(new IPEndPoint(IPAddress.Parse(IP), 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值