小弟用socket写了一个简单的服务器,客户端测试程序。
在自己电脑上都测试正确,正常连接与发送数据。
但是让同学用外网放客户端,服务器架在我家里,却连接不上。
小弟家的网络是ADSL的一说到这个问题,可能很多人就马上觉得是老生常谈。
端口映射,花生壳,买个域名之类的想法就会马上冒出来。小弟要表达的是,小弟认为和这些东西都没有太大关系。
小弟做了2个测试1.我提供当前的外网地址(ADSL的外网地址是每次登录都会变的,这个大家应该都知道)
外网用mstsc是可以远程登录上我的电脑。这个说明实际上我的机器就是在公网上,可以被大家访问。2.关闭防火墙后,外网ping我的IP也是可以ping的通小弟还查阅了电子工业出版社的一个菜鸟书籍上对ADSL有这么段描述:
由于ADSL的虚拟拨号方式,只有在用户拨入时才会获得一个IP地址,断开连接时又释放该ip地址,由于Internet中ip数量有限,所以当突发用户较多时,ip地址将被分配殆尽,这时后面的用户再连入将无法获取IP地址这段话似乎也在佐证这个观点:当前你ADSL登录后,分配给你的IP唯一和你的机器一一绑定了也就是你的公网IP了----都解释完这些后小弟感觉我的机器和放在公网上的普通机器好像是没有区别的。就是不知道为什么我的客户端放到外网后连我家的服务器连不通。大家请不用质疑小弟代码的问题,小弟对这些基础东西还是可以保证的。谢谢各位GGJJ不吝赐教啦。
在自己电脑上都测试正确,正常连接与发送数据。
但是让同学用外网放客户端,服务器架在我家里,却连接不上。
小弟家的网络是ADSL的一说到这个问题,可能很多人就马上觉得是老生常谈。
端口映射,花生壳,买个域名之类的想法就会马上冒出来。小弟要表达的是,小弟认为和这些东西都没有太大关系。
小弟做了2个测试1.我提供当前的外网地址(ADSL的外网地址是每次登录都会变的,这个大家应该都知道)
外网用mstsc是可以远程登录上我的电脑。这个说明实际上我的机器就是在公网上,可以被大家访问。2.关闭防火墙后,外网ping我的IP也是可以ping的通小弟还查阅了电子工业出版社的一个菜鸟书籍上对ADSL有这么段描述:
由于ADSL的虚拟拨号方式,只有在用户拨入时才会获得一个IP地址,断开连接时又释放该ip地址,由于Internet中ip数量有限,所以当突发用户较多时,ip地址将被分配殆尽,这时后面的用户再连入将无法获取IP地址这段话似乎也在佐证这个观点:当前你ADSL登录后,分配给你的IP唯一和你的机器一一绑定了也就是你的公网IP了----都解释完这些后小弟感觉我的机器和放在公网上的普通机器好像是没有区别的。就是不知道为什么我的客户端放到外网后连我家的服务器连不通。大家请不用质疑小弟代码的问题,小弟对这些基础东西还是可以保证的。谢谢各位GGJJ不吝赐教啦。
解决方案 »
- C# Oracle 11g客户端,10g服务器
- 项目中刚刚建立的组件,在工具箱怎么没有自动添加
- 请问怎么用C#模拟火的燃烧??
- 小白求教:C# 代理类型的理解。
- 如何去掉Form窗体的标题栏, 以及如何手工添加最小化和最大化按钮?
- 数据库问题
- DataGrid奇怪问题?关于行号的问题,高分求助!
- SqlClient连接sqlServer数据库如何写连接字符串?(必须是windows集成验证)
- 各位老大,帮我这个新手看下这段代码是怎么回事,总是报报INSERT INTO 语句的语法错误
- 想写一个程序,可以监测到别的应用程序是否启动或关闭,不知道如何入手,请教各位!
- C#使用钩子函数禁用按键的问题,急。。
- udp广播回射后怎么获得对方ip地址?
而且如果你能ping通对方,但仍然无法连接,而局域网环境下能连接的话。试着把服务器端和客户端电脑的防火墙都关了看看
而端口通常需要在ADSL Modem提供的NAT或者其他端口映射方式中设置。比如我电脑的本地IP为192.168.1.20,服务器侦听的是端口8888,则你需要在Modem上开个口子,能让外网向本地192.168.1.20:8888的连接被接受。同时还要考虑Windows自带的防火墙和你安装的杀软、防火墙软件的端口开放限制。这和eMule这些P2P软件设置侦听端口是一个原理。以前我写过一个eMule获取HighID的教程,您可以适当参考一下:
http://blog.vckbase.com/abbey/articles/26924.html
把服务器程序和客户端程序都放在本机服务器用公网IP看看能不能通讯
谢谢大家,结贴撒分了。