Я знаю, что эту тему задавали, я использовал много сообщений из Интернета, таких как codeproject, stackoverflow, но я все еще не могу передавать данные между двумя компьютерами, не входящими в локальную сеть.
Отличается ли передача по локальной сети или через Интернет? Должен ли я иметь временный сервер для выполнения этой задачи?
Моя программа работает в сети LAN, но когда я пытаюсь протестировать программу в сети WAN, я настраиваю сервер (получение) на компьютере моего друга, который находится далеко от меня, затем на моем компьютере в клиентской программе я заменил IP-адрес локальной сети. по IP компьютера моего друга, но это не сработало. Я что-то неправильно понял?
Если вы меня не понимаете, дайте мне ссылку на решение или научите меня, как передавать данные между двумя компьютерами, не входящими в локальную сеть. Большое спасибо и извините за мой плохой английский.
КОД: (только выполнить подключение)
Получить: (я установил это на машине моего друга)
namespace RecieveFile
{
public partial class Form1 : Form
{
#region Variables
private Thread thrDownload;
private Stream strLocal;
private NetworkStream strRemote;
private TcpListener tlsServer;
#endregion
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
thrDownload = new Thread(StartRecieving);
thrDownload.Start();
}
public void StartRecieving()
{
try
{
string hstServer = Dns.GetHostName();
IPAddress ipaLocal = Dns.GetHostEntry(hstServer).AddressList[0];
if (tlsServer == null)
{
tlsServer = new TcpListener(IPAddress.Any, Convert.ToInt32(29250));
}
tlsServer.Start();
TcpClient tclServer = tlsServer.AcceptTcpClient();
MessageBox.Show("Connection has been created");
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
strLocal.Close();
strRemote.Close();
MessageBox.Show("In finally");
StartRecieving();
}
}
}
}
Отправить: (я настроил это на своей машине)
private void Form1_Load(object sender, EventArgs e)
{
//171.255.9.234 is my friend's IP
//if this ip is a ip of computer in my LAN network, it can work
ConnectToSever("171.255.9.234", 29250);
}
public void ConnectToSever(string severIP, int severPort)
{
tcpClient = new TcpClient();
try
{
tcpClient.Connect(severIP, severPort);
MessageBox.Show("Connection has been created!","Message");
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}