public async void ConnectHandShake(UdpContext context) { var data = context.GetData <ConnectHandshakeDto>(); var ep = data.Ep; data.Info.OuterEP = PeerEP.ParsePeerEPFromIPEP(context.RemoteEndPoint); server.connectionDic[data.Info.OuterEP] = (ep, DateTime.UtcNow); await P2PServer.SendDataReliableAsync((int)CallMethods.PeerConnectionRequest, data.Info, ep.ToIPEP(), server.ackTasks, server.msgs, server.timeoutData); _logger.LogInformation("send handshake data"); }
public void HolePunchRequest(UdpContext context) { var reply = context.GetData <ConnectionReplyDto>() !; var ep = reply.Ep; var rep = PeerEP.ParsePeerEPFromIPEP(context.RemoteEndPoint); _logger.LogInformation("handshake reply get"); var c = server.connectionDic.TryRemove(ep, out var t); if (c && t.Item1 == rep) { _ = P2PServer.SendDataReliableAsync((int)CallMethods.ConnectionRequestCallback, reply.Acc, ep.ToIPEP(), server.ackTasks, server.msgs, server.timeoutData).AsTask(); if (reply.Acc) { _ = P2PServer.SendDataReliableAsync((int)CallMethods.StartPunching, "", ep.ToIPEP(), server.ackTasks, server.msgs, server.timeoutData).AsTask(); _ = P2PServer.SendDataReliableAsync((int)CallMethods.StartPunching, "", rep.ToIPEP(), server.ackTasks, server.msgs, server.timeoutData).AsTask(); } } }
public ServerHandlers(P2PServer _server, ILogger <ServerHandlers> logger) { server = _server; _logger = logger; }