C# socket编程无法连接广域网!!!大神帮助!!!

问题描述

如果我在局域网内通信,没有问题,比如服务器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另外客户端连接的时候出错提示的是什么?
解决方案十一:
学习中,哪位大神能给讲讲,我也做了端口映射,就是连不上

时间: 2024-09-19 10:13:53

C# socket编程无法连接广域网!!!大神帮助!!!的相关文章

mfc-MFC编程遇到问题求助大神

问题描述 MFC编程遇到问题求助大神 求助各路大神.. 我在VC 6.0上编写MFC程序,我在一个dlg对话框里面加两个按钮控件,设置点击它们会弹出不同的模态对话框(用的dlg.DoModal()).新的对话框有自己的编辑框和按钮,我在编辑框输入数据后点击按钮后会在结果编辑框中输出数据,但是我发现一个问题. 我这里想要做的是,点击两个按钮分别弹出一个模逆运算和模幂运算的对话框,我先写模逆的,编译运行,点击按钮,弹出对话框,在编辑框输入数据(运算数和模数),点击按钮,输出数据,结果没问题.接着我写

java-Java编程 如何调适 请大神指导

问题描述 Java编程 如何调适 请大神指导 // 2.某人参加比赛,依次输入10局得成绩,计算达到80分之上的比率, // 该比率如果大于0.8则显示"恭喜,通过一级",否则如果大于0.7则显示"恭喜, // 通过二级",否则显示"加油了!" 解决方案 int num = 10; int count = 0; for (int i = 0; i < num; i++) { Scanner scanner = new Scanner(Sys

tang-c++编程题,求大神解答............谢谢啦...........

问题描述 c++编程题,求大神解答............谢谢啦........... 在一个数组中首先判断里的自符是否为回文字符,如果是在按其长度排序,若相同长度的则按ASCII码排序(用c++)求大神解救....... 解决方案 花了一小时弄的,,,亲测. #include<iostream> using namespace std; bool judge(char *str); void sort(char *Selected[],int n); int Length(char *str

c语言-C编程题考题请教大神帮忙解答,非常感谢

问题描述 C编程题考题请教大神帮忙解答,非常感谢 求大侠帮忙:C语言程序设计---编程题(以下所有题目程序应是非递归的) 程序实现任意两个字符串s1.s2的比较.要求: 1) 字符串的比较写一函数sub()实现,不得调用标准库函数strcmp; 2) 在主函数中完成数据的输入与结果的输出. 如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)和等于A,则将整数A和B称为亲密数对.编程求5000以内的全部亲密数对. 程序实现将无序整数数组压缩成有序数组

vc++-求用c++编程,谢谢各位大神

问题描述 求用c++编程,谢谢各位大神 有一个自然数的集合,其中最小的数量是1,最大的数量是100,这个集合中的数除1外,每个数都可由集合中的某两个数(这两个数可以相同)求和得到.编写程序求符合上述条件的自然数的个数为10的所有组合.(15分) 解决方案 /*捕食者与被捕食者求大神解题C++.*/VS 中的一个BUG?求大神帮我解答下.求大神 一定要看完啊 解决方案二: 程序就先不写了, 重要的是解决问题的方法.我想到的方法如下: 咱们把问题反过来看,这10个数中必然是要有 1 和 2 存在的.

小弟近期在学习spark编程,请问各位大神spark可以处理视频文件吗?

问题描述 小弟近期在学习spark编程,请问各位大神spark可以处理视频文件吗? spark创建RDD的形式可以是 val text = sc.textFile("hdfs://......") 或者是 val text = sc.parallelize(List(1,2,3,4,5,6,7,8,9,10), 3) 但这些都是对文本文件或者数组的操作,它能否对视频文件进行操作 比如 games.mp4 请各位大神不吝赐教

C++数组编程问题,求大神指教

问题描述 C++数组编程问题,求大神指教 得到的结果是有重复的,如何删掉?请指教 代码如下: #include #include using std::cin; using std::cout; using std::endl; int main(){ int X, Y, Z, D, M; int x, y, z, d, a, k; cin >> M; for (d = 1; d <= (pow(M, 1.0 / 3.0)); d++) for (y = 1; y <= (sqrt

acm的c语言扫雷编程题目,求大神指点

问题描述 acm的c语言扫雷编程题目,求大神指点 解决方案 这是输出的部分,待会附上我的代码 解决方案二: 你是要找人代写,还是说代码需要debug? 解决方案三: 这是哪个acm平台呀,这个算法应该就是算临域,完后计数加加的吧 解决方案四: 问题出在最后和标准差个空格 #include #include #include int main(){ int c,b,i,j; int x=1; char a[1000][1000]; while(scanf("%d%d",&c,&a

异常-opencv3新手编程求助,跪求大神解答

问题描述 opencv3新手编程求助,跪求大神解答 代码如下: #include #include #include using namespace std; using namespace cv; bool MultiChannelBlending(); int main(){ if (MultiChannelBlending()){ cout << endl << "尼玛真费劲!"; } waitKey(); return 0; } bool MultiCh