Я настроил UDP-клиент для получения данных в C #.Клиент настроен на получение с использованием назначенного IP-адреса от моего WiFi-маршрутизатора.Клиент может получать данные, если я запускаю программу на том же компьютере, что и отправитель.Но когда я пытаюсь получить клиент на другом компьютере, клиент не получает никаких данных.
Я попытался установить IP-адрес в UDP-клиенте на IPAddress.Any, это не сработало.Я пробовал другие порты, и это также не работало.
IP-адрес на принимающей стороне установлен на IP-адрес отправителя.IP-адрес отправителя устанавливается на адрес получателя.Номера портов совпадают.
Важная часть кода начинается с Private Void Receive ().
using UnityEngine;
using System.Collections;
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
public class UDPReceive : MonoBehaviour
{
// receiving Thread
Thread receiveThread;
// udpclient object
UdpClient client;
//public string IP = "192.168.0.1";
public int port; // define > init
IPAddress ipaddress = IPAddress.Parse("192.168.0.100");
// infos
public string lastReceivedUDPPacket = "";
public string allReceivedUDPPackets = ""; // clean up this from time to time!
// start from shell
private static void Main()
{
UDPReceive receiveObj = new UDPReceive();
receiveObj.init();
string text = "";
do
{
text = Console.ReadLine();
}
while (!text.Equals("exit"));
}
// start from unity3d
public void Start()
{
init();
}
// init
private void init()
{
print("UDPSend.init()");
// define port
port = 27015;
// status
print("Sending to 192.168.0.100 : " + port);
print("Test-Sending to this Port: nc -u 192.168.0.100 " + port + "");
receiveThread = new Thread(
new ThreadStart(ReceiveData));
receiveThread.IsBackground = true;
receiveThread.Start();
}
// receive thread
private void ReceiveData()
{
client = new UdpClient(port);
while (true)
{
try
{
IPEndPoint anyIP = new IPEndPoint(ipaddress, port);
byte[] data = client.Receive(ref anyIP);
string text = Encoding.UTF8.GetString(data);
print(">> " + text);
// latest UDPpacket
lastReceivedUDPPacket = text;
// ....
allReceivedUDPPackets = allReceivedUDPPackets + text;
}
catch (Exception err)
{
print(err.ToString());
}
}
}
private void OnDisable()
{
if (receiveThread != null)
{
receiveThread.Abort();
client.Close();
}
}
// getLatestUDPPacket
// cleans up the rest
public string getLatestUDPPacket()
{
allReceivedUDPPackets = "";
return lastReceivedUDPPacket;
}
}
Я установил IP-адрес клиента на 192.168.0.100, который является IP-адресом.адрес отправителя.
Когда я запускаю программу на своем компьютере, клиент получает.Он не получает на других компьютерах.
Я также пытался установить IP-адрес клиента на его локальный IP-адрес, и это также не работает.
Кажется, что клиент может только получатьчерез локальный хост.
Что-то мне не хватает?Я даже пытался открыть брандмауэр, чтобы разрешить данные на порт 27015. Также не работает.