Описание
Возможны ошибки Networking.NetworkTransport.
Группа возможных ошибок NetworkTransport. Если из функции NetworkTransport возвращается ошибка, вы можете использовать NetworkError, чтобы узнать, какой тип ошибки произошел. Обязательно используйте NetworkTransport.Receive или аналогичный для прослушивания событий такого типа.
// создаём Button (Create>UI>Button) for the host.
// Прикрепляем Button в Инспекторе вашего GameObject.
//В Mode нажмите Button для подключения. Если соединение работает, подробности выводятся в окно Консоли. Если есть ошибка, то ошибка выводится на консоль.
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
int m_ServerSocket;
HostTopology m_HostTopology;
//Это Кнопки, запускающие клиент и сервер, и Button для отправки сообщений
//Убедитесь, что вы назначили их в Инспекторе перед тестированием
public Button m_ServerButton;
void Start()
{
//Настройте конфигурацию Connection, которая содержит информацию о канале
ConnectionConfig config = new ConnectionConfig();
/Создать новую информацию о хосте на основе созданной конфигурации и максимально разрешенного количества подключений (20)
m_HostTopology = new HostTopology(config, 20);
// Инициализируем сетевой транспорт
NetworkTransport.Init();
//Вызов функции ServerButton при нажатии на сервер Button
m_ServerButton.onClick.AddListener(ServerButton);
}
void Update()
{
//Это переменные, которые заменяются входящим сообщением
int outHostId;
int outConnectionId;
int outChannelId;
byte[] buffer = new byte[1024];
int receivedSize;
byte error;
//Set up the Network Transport to receive the incoming message, and decide what type of event
NetworkEventType eventType = NetworkTransport.Receive(out outHostId, out outConnectionId, out outChannelId, buffer, buffer.Length, out receivedSize, out error);
switch (eventType)
{
//Используйте этот случай, когда обнаружено соединение
case NetworkEventType.ConnectEvent:
{
//Вызов функции для обработки полученной информации
OnConnect(outHostId, outConnectionId, (NetworkError)error);
break;
}
case NetworkEventType.Nothing:
break;
default:
//Вывод ошибки
Debug.LogError("Получено неизвестное сетевое сообщение: " + eventType);
break;
}
}
//Эта функция вызывается при обнаружении соединения
void OnConnect(int hostID, int connectionID, NetworkError error)
{
//Вывод данной информации в консоль
Debug.Log("OnConnect(hostId = " + hostID + ", connectionId = "
+ connectionID + ", error = " + error.ToString() + ")");
}
void ServerButton()
{
byte error;
//Открываем сокеты для отправки и получения сообщений по порту 54321
m_ServerSocket = NetworkTransport.AddHost(m_HostTopology, 54321);
//Подключаем "сервер"
NetworkTransport.Connect(m_ServerSocket, "127.0.0.1", 54321, 0, out error);
//Проверяем, есть ли ошибка
if ((NetworkError)error != NetworkError.Ok)
{
//Выводим это сообщение в консоль с параметром Network ErrorDebug.Log("Была эта ошибка: " + (NetworkError)error);
}
//Иначе если ошибок не будет, выводим это сообщение в консоль
else Debug.Log("Подключён: " + (NetworkError)error);
}
}
Свойства
Ok | Операция завершилась успешно. |
WrongHost | Указанный хост недоступен. |
WrongConnection | Указанный идентификатор соединения не существует. |
WrongChannel | Указанный канал не существует. |
NoResources | Недостаточно ресурсов для обработки этого запроса. |
BadMessage | Нет сообщений |
Timeout | Время соединения истекло. |
MessageToLong | Сообщение слишком длинное и не помещается в буфер. |
WrongOperation | Операция не поддерживается. |
VersionMismatch | Версии протоколов несовместимы. Проверьте версии вашей библиотеки. |
CRCMismatch | Networking.ConnectionConfig не соответствует другой конечной точке. |
DNSFailure | Адрес, указанный для подключения, недействителен или не может быть разрешен. |
UsageError | Эта ошибка возникает, если какая-либо функция вызывается с неверными значениями параметров. |