如在其他SO问题中所建议的,我遵循本教程https://www.youtube.com/watch?v=ObcGBT4ZWEU 这适用于局域网,但是当我尝试通过从任何Web服务获取的IP尝试Internet时,使用端口80,它给了意大利的部分为“地址请求非在自己的范围内有效”的形象 c#TCP/IP通信错误:请求的地址在自己的上下文中无效
错误(我不知道这是否会为这个错误英文文本) 错误出来了“开始“按钮(按钮1)。代码:
private void button1_Click(object sender, EventArgs e)
{
try
{
epLocal = new IPEndPoint(IPAddress.Parse(textLocalIp.Text), Convert.ToInt32(textLocalPort.Text));
sck.Bind(epLocal);
epRemote = new IPEndPoint(IPAddress.Parse(textFriendsIp.Text), Convert.ToInt32(textFriendsPort.Text));
sck.Connect(epRemote);
byte[] buffer = new byte[1500];
sck.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epRemote, new AsyncCallback(MessageCallBack), buffer);
button1.Text = "Connected";
button1.Enabled = false;
button2.Enabled = true;
textMessage.Focus();
}
catch (Exception exp)
{
MessageBox.Show(exp.ToString());
}
}
插座变量声明为全局:
Socket sck;
EndPoint epLocal, epRemote;
和初始化:
sck = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
sck.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
任何建议?谢谢!!
编辑:我successfull得到englsh错误! 在意大利versione我的精确太行,它是:
sck.Bind(epLocal);
你有使用的有效IP吗?如果它在本地局域网上工作,听起来你可能会使用错误的IP地址。你是在公司环境中还是在家中连接?如果在家中,您可能需要使用http://whatsmyip.org/查看本地IP,因为很可能您的路由器正在进行NAT转换。这也可能意味着远程IP不在该端口上侦听。您可以尝试执行telnet并查看您是否连接。什么是抛出异常? –
Mike
也可以看看这里http://bytes.com/topic/c-sharp/answers/233487-tcpclient-exception-requested-address-not-valid-its-context – Mike
转到https://www.grc。 com/shieldsup然后按继续,向下滚动到可以选择端口扫描的地方“在那里你可以看到你是互联网提供商的IP”,并扫描你的计算机的开放端口,如果需要的话。 – Creator