hostId | 与事件关联的主机 ID。 |
connectionId | 收到事件的 connectionID。 |
channelId | 与事件关联的通道 ID。 |
buffer | 用于保存所接收数据的缓冲区。 |
bufferSize | 提供的缓冲区的大小。 |
receivedSize | 实际收到的数据大小。 |
error | 错误(可以转换为 NetworkError 以便了解更多信息)。 |
NetworkEventType 返回的事件的类型。
被调用以便轮询底层系统中的事件。
using UnityEngine; using UnityEngine.Networking;
public class ConnectExample : MonoBehaviour { int connectionId; int channelId; int hostId;
void Start() { // Init Transport using default values. NetworkTransport.Init();
// Create a connection config and add a Channel. ConnectionConfig config = new ConnectionConfig(); channelId = config.AddChannel(QosType.Reliable);
// Create a topology based on the connection config. HostTopology topology = new HostTopology(config, 10);
// Create a host based on the topology we just created, and bind the socket to port 12345. hostId = NetworkTransport.AddHost(topology, 12345);
// Connect to the host with IP 10.0.0.42 and port 54321 byte error; connectionId = NetworkTransport.Connect(hostId, "10.0.0.42", 54321, 0, out error); }
void Update() { int outHostId; int outConnectionId; int outChannelId;
int receivedSize; byte error; NetworkEventType evt = NetworkTransport.Receive(out outHostId, out outConnectionId, out outChannelId, buffer, buffer.Length, out receivedSize, out error);
switch (evt) { case NetworkEventType.ConnectEvent: { OnConnect(outHostId, outConnectionId, (NetworkError)error); break; } case NetworkEventType.DisconnectEvent: { OnDisconnect(outHostId, outConnectionId, (NetworkError)error); break; } case NetworkEventType.DataEvent: { OnData(outHostId, outConnectionId, outChannelId, buffer, receivedSize, (NetworkError)error); break; } case NetworkEventType.BroadcastEvent: { OnBroadcast(outHostId, buffer, receivedSize, (NetworkError)error); break; } case NetworkEventType.Nothing: break;
default: Debug.LogError("Unknown network message type received: " + evt); break; } }
void OnConnect(int hostId, int connectionId, NetworkError error) { Debug.Log("OnConnect(hostId = " + hostId + ", connectionId = " + connectionId + ", error = " + error.ToString() + ")"); }
void OnDisconnect(int hostId, int connectionId, NetworkError error) { Debug.Log("OnDisconnect(hostId = " + hostId + ", connectionId = " + connectionId + ", error = " + error.ToString() + ")"); }
void OnBroadcast(int hostId, byte[] data, int size, NetworkError error) { Debug.Log("OnBroadcast(hostId = " + hostId + ", data = " + data + ", size = " + size + ", error = " + error.ToString() + ")"); }
void OnData(int hostId, int connectionId, int channelId, byte[] data, int size, NetworkError error) { Debug.Log("OnDisconnect(hostId = " + hostId + ", connectionId = " + connectionId + ", channelId = " + channelId + ", data = " + data + ", size = " + size + ", error = " + error.ToString() + ")"); } }