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);
}