コード例 #1
0
 /// <summary>
 /// Disconnects all connected clients.
 /// </summary>
 private void disconnectClients()
 {
     for (int i = 0; i < connectedClients.Count; i++)
     {
         networkDriver.Disconnect(networkConnections[i]);
     }
 }
コード例 #2
0
 /// <summary>
 /// Disconnects the client from the server.
 /// </summary>
 public void disconnectFromServer()
 {
     if (connectionToServer.IsCreated)
     {
         networkDriver.Disconnect(connectionToServer);
         networkEndPoint = default;
     }
 }
コード例 #3
0
 public void Execute(Entity entity, int jobIndex, ref NetworkStreamConnection connection, [ReadOnly] ref NetworkStreamRequestDisconnect disconnect)
 {
     driver.Disconnect(connection.Value);
     commandBuffer.AddComponent(jobIndex, entity, new NetworkStreamDisconnected {
         Reason = disconnect.Reason
     });
     commandBuffer.RemoveComponent <NetworkStreamRequestDisconnect>(jobIndex, entity);
 }
コード例 #4
0
    void OnDestroy()
    {
        // All jobs must be completed before we can dispose the data they use
        jobHandler.Complete();
        m_ClientDriver.Disconnect(m_clientToServerConnection[0]);
        m_ClientDriver.Dispose();
        m_clientToServerConnection.Dispose();

        pcc.GetStateEvent   -= GetStateEventCallback;
        pcc.GetResultsEvent -= GetResultsEventCallback;
    }
コード例 #5
0
        public void Disconnect(int internalId)
        {
            for (int i = 0; i < m_Connections.Length; i++)
            {
                if (m_Connections[i].InternalId == internalId)
                {
                    m_Driver.Disconnect(m_Connections[i]);
                    ClientDisconnected(internalId);

                    break;
                }
            }

            OnClientDisconnected?.Invoke(internalId);
        }
コード例 #6
0
ファイル: SocketTests.cs プロジェクト: zs782306174/DOTSSample
        public void UdpC_ReconnectAndResend_ShouldReconnectAndResend()
        {
            using (var server = new UdpNetworkDriver(new NetworkDataStreamParameter {
            }))
                using (var client = new UdpNetworkDriver(new NetworkDataStreamParameter {
                }))
                {
                    var serverPort = 50007;

                    server.Bind(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
                    client.Bind(NetworkEndPoint.LoopbackIpv4);

                    server.Listen();

                    NetworkConnection serverConnection, clientConnection;
                    int maxIterations = 100;

                    var id = client.Connect(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
                    ConnectTogether(server, client, maxIterations, out serverConnection, out clientConnection);

                    client.Disconnect(id);

                    server.ScheduleUpdate().Complete();

                    var data = new byte[1472];
                    var size = 1472;
                    NetworkConnection from;

                    Assert.AreEqual(ExperimentalEventType.Disconnect, PollEvent(ExperimentalEventType.Disconnect, maxIterations, server, ref data, out size, out from));

                    id = client.Connect(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
                    ConnectTogether(server, client, maxIterations, out serverConnection, out clientConnection);

                    var message = new byte[]
                    {
                        (byte)'m',
                        (byte)'e',
                        (byte)'s',
                        (byte)'s',
                        (byte)'a',
                        (byte)'g',
                        (byte)'e'
                    };

                    SendReceive(client, server, clientConnection, serverConnection, message, maxIterations);
                }
        }
コード例 #7
0
ファイル: SocketTests.cs プロジェクト: zs782306174/DOTSSample
        public void Update()
        {
            if (!m_Socket.Listening && !conn.IsCreated)
            {
                conn = m_Socket.Connect(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
            }
            else if (!m_Socket.Listening && dataCounter == 0 && !conn.IsCreated)
            {
                using (var message = new DataStreamWriter(7, Allocator.Persistent))
                {
                    message.Write((byte)'m');
                    message.Write((byte)'e');
                    message.Write((byte)'s');
                    message.Write((byte)'s');
                    message.Write((byte)'a');
                    message.Write((byte)'g');
                    message.Write((byte)'e');

                    conn.Send(m_Socket, message);
                }
            }
            else if (!m_Socket.Listening && conn.IsCreated &&
                     UnityEngine.Random.Range(0, 1000) < 10)
            {
                m_Socket.Disconnect(conn);
                conn = default(NetworkConnection);
            }

            NetworkConnection connection;
            DataStreamReader  reader;
            var context = default(DataStreamReader.Context);
            var ev      = m_Socket.PopEvent(out connection, out reader);

            if (ev == ExperimentalEventType.Empty)
            {
                return;
            }

            using (var writer = new DataStreamWriter(reader.Length, Allocator.Temp))
            {
                unsafe
                {
                    reader.ReadBytes(ref context, writer.GetUnsafePtr(), reader.Length);
                }
                switch (ev)
                {
                case ExperimentalEventType.Connect:
                    connectCounter++;
                    break;

                case ExperimentalEventType.Disconnect:
                    conn = default(NetworkConnection);
                    disconnectCounter++;
                    break;

                case ExperimentalEventType.Data:
                    dataCounter++;
                    connection.Send(m_Socket, writer);
                    break;
                }
            }
        }