C# socket编程无法连接广域网!!!大神帮助!!!
如果我在局域网内通信,没有问题,比如服务器IP:192.168.2.100:5050,客户端连接192.168.2.100:5050,连接交互成功。但是,如果我连接广域网(本机已经设为dmz主机),服务器IP:145.67.12.145(外网IP):5050,当执行到
try
{
tcplistener = new TcpListener(ip,port);
tcplistener.Start();
}
catch(Exception ex)
{
listBox1.Items.Add("失败");
listBox1.Items.Add(ex.Message);
return;
}
IPAdress ip=IPAddress.parse("145.67.12.145"); int port=5050;
抛出异常:"在其上下文中,该请求的地址无效"
如果我把服务器IP设为:192.168.2.101:5050,用客户端连接IP:145.67.12.145(外网IP):5050,执行到
try
{
tcpclient = new TcpClient();
tcpclient.Connect(ipendpoint);
}
catch(Exception ex)
{
listBox1.Items.Add("连接服务器失败");
listBox1.Items.Add(ex.Message);
return;
}
IPEndPoint ipendpoint=new IPEndPoint(ip,port);
我已经快被socket折磨崩溃了,大家快帮帮我把!!!!!!!!!!!!!!!!!!!!!!!
我想让服务器在广域网上绑定监听,然后让客户端从广域网上连接到服务器!!!!!!! socket c# 服务器 编程 异常 --------------------编程问答-------------------- 直接映射下端口试试看。
有的路由器设置了dmz,但是防火墙仍然拒绝wan->lan的数据包。 --------------------编程问答-------------------- 不是 192.168.2.100 吗? 怎么写成 192.168.2.101 呢?
另外,服务器使用 new IPEndPoint(IPAddress.Any, 5050) 就行了,其实不需要写 IP。 --------------------编程问答-------------------- 在路由器上最好不要把服务器设置为 dmz 主机,这样很容易被攻击。你可以把你的路由器的端口 5050 设置为映射到 192.168.2.101:5050,而不需要将整个服务器的所有端口暴露出去。 --------------------编程问答-------------------- 设置为映射到 192.168.2.101:5050 --> 设置为映射到 192.168.2.100:5050
1. 服务器监听消息,跟“外网IP”没有任何关系。
2. 客户端使用 145.67.12.145:5050 访问到了服务器,是路由器的功劳,而服务器并不需要知道自己的外网IP。
--------------------编程问答--------------------
欲哭无泪,这样设置了还是不行 --------------------编程问答--------------------
我贴了图,太桑心了,还是没用 --------------------编程问答--------------------
我的路由器好像没有端口映射,只有DMZ和虚拟服务器,我贴了图,您帮看看吧。我设置的对么?
补充:.NET技术 , Web Services