1
我在c#.net中製作了一個簡單的聊天應用程序,用於在兩臺計算機之間發送和接收數據。套接字 - UDP通過互聯網發送數據
所以,我用這個方法來發送數據:
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();
}
這工作沒有一個LAN上的兩臺計算機之間的任何問題,但我想知道(如果可能)如何在互聯網上做同樣的事情。
從我在互聯網上搜索的東西看來,我必須使用端口轉發才能做到這一點,所以我已經這樣做了,但我不知道該怎麼做。所以我的問題是,我應該如何改變這個代碼(如果我必須),所以我可以通過互聯網發送和接收數據(UDP),假設我已經正確轉發了端口並假設我知道外部IP兩臺路由器?
預先感謝您。