一、Python部分代码
import socket
server_ip = '127.0.0.1'
server_port = 5054
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.bind((server_ip, server_port))
while True:
//data为从Unity接收到的数据
data, addr = udp_socket.recvfrom(5054)
//response_message为从Python发送到Unity的数据
udp_socket.sendto(response_message.encode('utf-8'), addr)
二、Unity部分
using System;
using System.Collections;
using System.Net;
using System.Net.Sockets;
using UnityEngine;
public class UDP : MonoBehaviour
{
UdpClient udpClient;
IPEndPoint serverEndPoint;
void Start()
{
udpClient = new UdpClient();
serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5054);
System.Threading.Thread receiveThread = new System.Threading.Thread(new System.Threading.ThreadStart(ReceiveData));
receiveThread.IsBackground = true;
receiveThread.Start();
}
void Update()
{
string message = "Hello from Unity!";
byte[] data = Encoding.UTF8.GetBytes(message);
udpClient.Send(data, data.Length, serverEndPoint);
}
void ReceiveData()
{
while (true)
{
try
{
IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0);
byte[] data = udpClient.Receive(ref anyIP);
string receivedMessage = Encoding.UTF8.GetString(data);
result = receivedMessage;
Debug.Log($"Received data from {anyIP}: {receivedMessage}");
}
}
}
void OnDestroy()
{
udpClient.Close();
}
}