c# - 如何正确使用 Unity Transport API?
问题描述
我正在尝试使用 Unitys 传输 api 建立网络通信。
网络连接正在运行,两个设备都可以通过NetworkDiscovery组件相互发送和接收广播。到现在为止还挺好。
现在,如果我尝试通过传输 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。
统一控制台:
我很感激有关如何使这项工作的提示。
解决方案
我不确定是否是这种情况,但我在您的代码中看不到任何 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);
}
推荐阅读
- python - Numpy协方差
- django - Django:在创建之前检查实例是否存在
- node.js - 为 Neovim 设置自定义节点版本(路径)
- javascript - 根据值对组进行排序
- json - 从 Kotlin 对象列表创建 JSONObjects 集合
- node.js - 无法在我的项目中安装 graphql-koa 库
- git - git stash pop/apply to specific index include previous index
- mysql - 用于计算服务正常运行时间的 MySql 查询
- database - Liquibase 快照命令也可以生成数据快照吗
- javascript - 如何在 nextjs 项目中拥有不同的 404.js 页面?