问题描述
如果我在局域网内通信,没有问题,比如服务器IP:192.168.2.100:5050,客户端连接192.168.2.100:5050,连接交互成功。但是,如果我连接广域网(本机已经设为dmz主机),服务器IP:145.67.12.145(外网IP):5050,当执行到try{tcplistener=newTcpListener(ip,port);tcplistener.Start();}catch(Exceptionex){listBox1.Items.Add("失败");listBox1.Items.Add(ex.Message);return;}IPAdressip=IPAddress.parse("145.67.12.145");intport=5050;抛出异常:"在其上下文中,该请求的地址无效"如果我把服务器IP设为:192.168.2.101:5050,用客户端连接IP:145.67.12.145(外网IP):5050,执行到try{tcpclient=newTcpClient();tcpclient.Connect(ipendpoint);}catch(Exceptionex){listBox1.Items.Add("连接服务器失败");listBox1.Items.Add(ex.Message);return;}IPEndPointipendpoint=newIPEndPoint(ip,port);我已经快被socket折磨崩溃了,大家快帮帮我把!!!!!!!!!!!!!!!!!!!!!!!我想让服务器在广域网上绑定监听,然后让客户端从广域网上连接到服务器!!!!!!!
解决方案
解决方案二:
直接映射下端口试试看。有的路由器设置了dmz,但是防火墙仍然拒绝wan->lan的数据包。
解决方案三:
不是192.168.2.100吗?怎么写成192.168.2.101呢?另外,服务器使用newIPEndPoint(IPAddress.Any,5050)就行了,其实不需要写IP。
解决方案四:
在路由器上最好不要把服务器设置为dmz主机,这样很容易被攻击。你可以把你的路由器的端口5050设置为映射到192.168.2.101:5050,而不需要将整个服务器的所有端口暴露出去。
解决方案五:
设置为映射到192.168.2.101:5050-->设置为映射到192.168.2.100:50501.服务器监听消息,跟“外网IP”没有任何关系。2.客户端使用145.67.12.145:5050访问到了服务器,是路由器的功劳,而服务器并不需要知道自己的外网IP。
解决方案六:
欲哭无泪,这样设置了还是不行
解决方案七:
引用4楼sp1234的回复:
设置为映射到192.168.2.101:5050-->设置为映射到192.168.2.100:50501.服务器监听消息,跟“外网IP”没有任何关系。2.客户端使用145.67.12.145:5050访问到了服务器,是路由器的功劳,而服务器并不需要知道自己的外网IP。
我贴了图,太桑心了,还是没用
解决方案八:
引用1楼caozhy的回复:
直接映射下端口试试看。有的路由器设置了dmz,但是防火墙仍然拒绝wan->lan的数据包。
我的路由器好像没有端口映射,只有DMZ和虚拟服务器,我贴了图,您帮看看吧。我设置的对么?
解决方案九:
顶一下,关注
解决方案十:
引用楼主u011708759的回复:
如果我在局域网内通信,没有问题,比如服务器IP:192.168.2.100:5050,客户端连接192.168.2.100:5050,连接交互成功。但是,如果我连接广域网(本机已经设为dmz主机),服务器IP:145.67.12.145(外网IP):5050,当执行到try{tcplistener=newTcpListener(ip,port);tcplistener.Start();}catch(Exceptionex){listBox1.Items.Add("失败");listBox1.Items.Add(ex.Message);return;}IPAdressip=IPAddress.parse("145.67.12.145");intport=5050;抛出异常:"在其上下文中,该请求的地址无效"如果我把服务器IP设为:192.168.2.101:5050,用客户端连接IP:145.67.12.145(外网IP):5050,执行到try{tcpclient=newTcpClient();tcpclient.Connect(ipendpoint);}catch(Exceptionex){listBox1.Items.Add("连接服务器失败");listBox1.Items.Add(ex.Message);return;}IPEndPointipendpoint=newIPEndPoint(ip,port);我已经快被socket折磨崩溃了,大家快帮帮我把!!!!!!!!!!!!!!!!!!!!!!!我想让服务器在广域网上绑定监听,然后让客户端从广域网上连接到服务器!!!!!!!
不行就监听IP设置0.0.0.0另外客户端连接的时候出错提示的是什么?
解决方案十一:
学习中,哪位大神能给讲讲,我也做了端口映射,就是连不上