当前位置:编程学习 > C#/ASP.NET >>

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。

--------------------编程问答--------------------




欲哭无泪,这样设置了还是不行 --------------------编程问答--------------------
引用 4 楼 sp1234 的回复:
设置为映射到 192.168.2.101:5050  -->  设置为映射到 192.168.2.100:5050


1. 服务器监听消息,跟“外网IP”没有任何关系。
2. 客户端使用 145.67.12.145:5050 访问到了服务器,是路由器的功劳,而服务器并不需要知道自己的外网IP。

我贴了图,太桑心了,还是没用 --------------------编程问答--------------------
引用 1 楼 caozhy 的回复:
直接映射下端口试试看。

有的路由器设置了dmz,但是防火墙仍然拒绝wan->lan的数据包。



我的路由器好像没有端口映射,只有DMZ和虚拟服务器,我贴了图,您帮看看吧。我设置的对么?
补充:.NET技术 ,  Web Services
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,