Рейтинг@Mail.ru
Работа с сокетами в unity - Форум atms
Главная Мой профиль Регистрация Выход Вход
- Четверг, 02:52:1
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Unity3D » C# Unity Справочник (Для чайников) » Работа с сокетами в unity
Работа с сокетами в unity
ПользовательДата: Пятница, 21 Августа 2015, 13:56 | Сообщение # 1
Некто
Группа: Обычный пользователь
Сообщений: 141
Репутация: 19
Статус: Нет на форме
1) Для начала подключим нужные библиотеки

Код
using System.Net.Sockets;//работа с сокетами
using System.Net;//работа с сокетами
using System;//работа с сокетами IAsyncResult


2) создадим 2 основные переменные после MonoBehaviour

Код
public class SocketTest : MonoBehaviour { //что бы было понятно куда вставлять

      private Socket Sock1; //главная переменная сокета
private byte[] Buffer1 = new byte[8142]; //буфер куда временно будут приходить пакеты от сервера


3) допустим мы создали кнопку и по ее клику выполняется функция onClick

Код
void onClick() {
         IPAddress ip = IPAddress.Parse("127.0.0.1");//наш ip адрес для подключения к серверу
         int port = 80; //наш порт
         Sock1 = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//создаем новый сокет
         Sock1.Connect (ip, port); //подключаемся к серверу
         if (Sock1.Connected)
         {
            Debug.Log("yes"); //если соединились то выведем в дебаг слово yes
                           //теперь тестовая отправка серверу 1 байта
                           byte[] arr = new byte[1]; //создадим массив байт из 1 элемента
                           arr[0] = 192; //запишем 1 байт в нулевой элемент массива(массив начинается с 0)
            Sock1.Send(arr); //этой командой  можно отправлять серверу массив байт arr
                             //на форуме есть тема http://atms.at.ua/forum/14-148-1 - строку в массив байт и обратно, ну и эта http://atms.at.ua/forum/14-149-1
                            //там объясняется как структуру переводить в массив байт и обратно
            Sock1.BeginReceive(Buffer1,0,Buffer1.Length,SocketFlags.None,new AsyncCallback(ReceiveCallback),null);//настроим прием пакетов в функцию ReceiveCallback
         }else{Debug.Log("no connect");}


Прием пакетов

Код
private void ReceiveCallback(IAsyncResult AR)   {
         int recieved = Sock1.EndReceive(AR);         
         if(recieved <= 0)return;//если пакет не пришел то вернемся на начало
         byte[] recData = new byte[recieved]; //создадим массив байт recData
         Buffer.BlockCopy(Buffer1,0,recData,0,recieved);//в recData приходят пакеты от сервера
         Debug.Log (ByteToStr(recData));//через ByteToStr посмотрим содержимое recData в дебагере. ByteToStr тут http://atms.at.ua/forum/14-148-1
         Sock1.BeginReceive(Buffer1,0,Buffer1.Length,SocketFlags.None,new AsyncCallback(ReceiveCallback),null);
}


Да хранит вас Ctrl+S.
Да убережет вас Alt+F4 от порнобанера.
Админь...
 
Форум » Unity3D » C# Unity Справочник (Для чайников) » Работа с сокетами в unity
  • Страница 1 из 1
  • 1
Поиск:

atms 2009 © 2024