套接字-UDP通过互联网发送数据
本文关键字:数据 互联网 -UDP 套接字 | 更新日期: 2023-09-27 18:28:13
我在c#.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();
}
这在局域网上的两台计算机之间没有任何问题,但我想知道(如果可能的话)如何在互联网上做同样的事情。
从我在网上搜索到的情况来看,我似乎必须使用端口转发才能做到这一点,所以我已经做到了,但我不知道我应该知道什么。
所以我的问题是,假设我已经正确转发了端口,并且假设我知道两个路由器的外部IP,我应该如何更改此代码(如果必须的话),以便通过互联网发送和接收数据(UDP)?
提前谢谢。
只要您的(公共)IP地址正确,并且端口在路由器上正确转发(即转发到正确的专用IP,在您的情况下是UDP),这应该可以正常工作。
您知道这是UDP,所以它不是可靠的数据传输。