前言:最近准备做一个多人在线小游戏的来着,因为没学过udp所以准备用以前学JavaScript时候学来的socket做一个,结果遇到bug裂开了,后来一想socket效率确实不太够然后就没修bug了,但是现在心血来潮把当时写的屎山一样的socket代码刨了一下,简单的封装了一个类。当然,是真的很简单的封装,甚至我自己都不确保能用的那种......
编译器是Microsoft Visual Studio 2022,没改过啥东西,用原生代码码的。
目前能想到但不想处理的问题直接列出来得了:
- 这种破烂异步的使用放到C++里会爆栈的不知道C#怎么说
- 客户端断连的时候估计这边接收不到断连的消息,一个巨大的bug等我有时间了修吧
- 单次收到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),