Я создал приложение чата в С#.net, которое отправляет и получает данные между двумя компьютерами.
Итак, я использовал этот метод для отправки данных:
int port = 11000;
private void send(string data, string ip)
{
Socket sending_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint sending_end_point = null;
byte[] send_buffer = Encoding.ASCII.GetBytes(data);
sending_end_point = new IPEndPoint(IPAddress.Parse(ip), port);
try { sending_socket.SendTo(send_buffer, sending_end_point); }
catch { }
}
И чтобы получить, я использовал это:
string receiveddata = "";
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
UdpClient listener = new UdpClient(port);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, port);
byte[] receive_byte_array;
try
{
receive_byte_array = listener.Receive(ref groupEP);
receiveddata = Encoding.ASCII.GetString(receive_byte_array, 0, receive_byte_array.Length);
}
catch { }
listener.Close();
}
Это работает без проблем между двумя компьютерами в локальной сети, но я хотел бы узнать (если возможно), как делать то же самое через Интернет.
Из того, что я искал в Интернете, кажется, что мне нужно использовать переадресацию портов, чтобы сделать это, поэтому я уже это сделал, но я не знаю, что мне следует знать.
Итак, мой вопрос: как мне изменить этот код (если нужно), чтобы я мог отправлять и получать данные (UDP) через Интернет, предполагая, что я правильно перенаправил порт и предполагаю, что знаю внешние IP-адреса обоих маршрутизаторов?
Заранее спасибо.
Это должно работать нормально, если ваш (общедоступный) IP-адрес правильный и порты правильно перенаправлены на ваш маршрутизатор (что означает, пересылается на правильный IP-адрес по правильному протоколу в вашем случае UDP).
Вы знаете, что это UDP, хотя и не надежная передача данных.