【发布时间】:2014-11-08 18:40:56
【问题描述】:
我知道有人问过这个话题,我使用了很多来自互联网的帖子,例如 codeproject、stackoverflow,但我仍然无法在不在 LAN 网络上的两台计算机之间传输数据。
局域网传输和互联网传输有区别吗?我必须有一个临时服务器来完成这项任务吗?
我的程序在 LAN 网络上运行,但是当我尝试在 WAN 网络中测试程序时,我在离我很远的朋友的计算机上设置了服务器(接收),然后,在我的计算机中,在客户端程序中,我替换了局域网的IP由我朋友电脑的IP,但它不起作用。我误解了什么吗?
如果您不明白我的意思,请给我解决方案的链接或教我如何在不在 LAN 计算机上的 2 台计算机之间传输数据。非常感谢你,对不起我的英语不好。
代码:(仅建立连接)
接收:(我在朋友的机器上设置了这个)
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);
}
}
【问题讨论】:
-
请出示代码,否则这只是我们的猜测。
-
假设通过 TCP/IP 进行通信,从应用程序代码的角度来看没有任何区别。有了这里提供的信息,没有人真的能告诉你太多,但无论如何这更多是关于服务器故障的问题,尽管他们也可能会拒绝它。
-
感谢您的通知,我已经添加了代码,希望我能得到答案。
标签: c# networking data-transfer