예제 #1
0
    /// <summary>
    /// 新客户端连接
    /// </summary>
    /// <param name="conv"></param>
    void NewConv(uint conv)
    {
        KcpSession kcpSession = new KcpSession();

        kcpSession.SetConv(conv);
        kcpSession.Begin();

        kcpSesstionDic[conv] = kcpSession;
    }
예제 #2
0
    public Network(UdpClientSession udpClientSession, KcpSession kcpSession)
    {
        this.udpClientSession = udpClientSession;
        this.kcpSession       = kcpSession;

        EventSystem.RegisterEvent(EventID.kcp_init_success, KCPInitSuccess);
        EventSystem.RegisterEvent(EventID.get_conv, OnGetConv);
        EventSystem.RegisterEvent(EventID.udp_init_success, UDPInitSuccess);
        EventSystem.RegisterEvent(EventID.udpbuffer_to_kcp, UDPBufferToKcp);
        EventSystem.RegisterEvent(EventID.send_kcp_buffer, SendKCPBuffer);
        EventSystem.RegisterEvent(EventID.receive_kcp_buffer, ReceiveKcpBuffer);
        EventSystem.RegisterEvent(EventID.try_get_conv, TryGetConv);
        EventSystem.RegisterEvent(EventID.network_disconnect, NetworkDisconnect);
        EventSystem.RegisterEvent(EventID.connect_udp, ConnectUDP);

        EventSystem.DispatchEvent(EventID.connect_udp);
    }
예제 #3
0
        static void Main(string[] args)
        {
            Debug.Log("请输入服务器的IP地址 缺省值为127.0.0.1");
            string ip = Console.ReadLine();

            if (string.IsNullOrEmpty(ip.Trim()))
            {
                ip = "127.0.0.1";
            }
            Debug.Log("请输入 UDP 服务监听的端口 缺省值为12800");

            string udp_port = Console.ReadLine();


            ushort udpPort = 12800;

            if (ushort.TryParse(udp_port, out var result_udpPort))
            {
                udpPort = result_udpPort;
            }

            UdpClientSession clientSession = new UdpClientSession(ip, udpPort);
            KcpSession       kcpsession    = new KcpSession();
            Network          network       = new Network(clientSession, kcpsession);

            int heartbeat = 0;

            while (true)
            {
                if (kcpsession.GetConv > 0)
                {
                    heartbeat++;
                    if (heartbeat > 100)
                    {
                        heartbeat = 0;
                        byte[] buffer = BitConverter.GetBytes(kcpsession.GetConv);
                        EventSystem.DispatchEvent(EventID.send_kcp_buffer, buffer);
                    }
                }

                Thread.Sleep(10);
                network.Update();
                GC.Collect();
            }
        }
예제 #4
0
 private void KcpSvr_OnKcpReceive(KcpSession session, Span <byte> data, IPEndPoint endPoint)
 {
     Console.WriteLine(Encoding.Default.GetString(data));
 }
예제 #5
0
 private void KcpSvr_OnNew(KcpSession session)
 {
     Console.WriteLine($"新客户端连接{session.IPPort}");
 }