Как правильно использовать Unity Transport API? - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь установить сетевое соединение, используя транспортный API Unitys.

Сетевое соединение работает, оба устройства могут отправлять и получать широковещательные сообщения через компонент NetworkDiscovery от каждого другого.Пока все хорошо.

Теперь, если я пытаюсь отправить данные через Transport API, я получаю ошибки на отправляющем устройстве, и ничего на принимающей стороне.

public void Send()
{
    Connection = new NetworkConnection();
    var info = LobbyRenderer.GetSelectedHostInfo();
    Connection.Initialize(info.ipv4, 1, 1, new HostTopology(new ConnectionConfig(), 1));

    byte connectionError;
    websocketId = NetworkTransport.AddWebsocketHost(new HostTopology(new ConnectionConfig(), 1), 47774);
    connectionId = NetworkTransport.Connect(websocketId, info.ipv4, 47774, 0, out connectionError);

    byte sendError;
    byte[] bytes = new byte[2] { 1,1 };
    NetworkTransport.Send(websocketId, connectionId, 1, bytes, 2, out sendError);
}

Байт connectionError возвращает4, байт sendError возвращает 2.

Консоль Unity:

unity console

Буду признателен за подсказку, как сделать эту работу.

1 Ответ

0 голосов
/ 16 декабря 2018

Я не уверен, что это так, но я не вижу ни одного канала QOS в вашем коде, попробуйте добавить его, вы также должны указать канал QOS при отправке.

public void Send()
{
    Connection = new NetworkConnection();
    var info = LobbyRenderer.GetSelectedHostInfo();
    Connection.Initialize(info.ipv4, 1, 1, new HostTopology(new ConnectionConfig(), 1));

    byte connectionError;
    ConnectionConfig config = new ConnectionConfig();
    int myReliableChannelId  = config.AddChannel(QosType.Reliable);
    int myUnreliableChannelId = config.AddChannel(QosType.Unreliable);
    websocketId = NetworkTransport.AddWebsocketHost(new HostTopology(config, 1), 47774);
    connectionId = NetworkTransport.Connect(websocketId, info.ipv4, 47774, 0, out connectionError);

    byte sendError;
    byte[] bytes = new byte[2] { 1,1 };
    NetworkTransport.Send(websocketId, connectionId, myReliableChannelId, bytes, 2, out sendError);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...