48 lines
1.4 KiB
C#
48 lines
1.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Net;
|
|
using System.Net.Sockets;
|
|
using System.Text;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
|
|
public class UDPServer : MonoBehaviour
|
|
{
|
|
public TextMeshProUGUI text;
|
|
|
|
private Socket socket;
|
|
private bool isServerStarted = false;
|
|
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
StartServer();
|
|
StartCoroutine(Listen());
|
|
}
|
|
|
|
private void StartServer()
|
|
{
|
|
socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
|
var localIP = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5555);
|
|
socket.Bind(localIP);
|
|
isServerStarted = true;
|
|
Debug.Log("Server was started.");
|
|
}
|
|
private IEnumerator Listen()
|
|
{
|
|
while (isServerStarted)
|
|
{
|
|
EndPoint remoteIp = new IPEndPoint(IPAddress.Any, 0);
|
|
byte[] data = new byte[1024];
|
|
var result = socket.ReceiveFrom(data, SocketFlags.None, ref remoteIp);
|
|
var message = Encoding.UTF8.GetString(data, 0, result);
|
|
string[] args = message.Split('|');
|
|
string serverMessage = "Hello from server!";
|
|
byte[] serverData = Encoding.UTF8.GetBytes(serverMessage);
|
|
int bytes = socket.SendTo(serverData, remoteIp);
|
|
text.text = args[1];
|
|
yield return new WaitForEndOfFrame();
|
|
}
|
|
}
|
|
}
|