• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#/.net服务端程序,无法通过防火墙的真正坑爹原因

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

      把C#/.net写的服务端程序,丢到服务器里,然后用防火墙给这个程序设置白名单,这本来是很正常的操作步骤。问题是,.net程序,有些连接并不是由程序本身开的,而是由 System.exe 进程开的!!因此,无论你怎么给.net程序开防火墙白名单,都没木有作用滴。这坑爹的鸟设计啊..虽然这是为了端口复用,但完全可以把权限划给用户程序,为毛非得给System.exe,微软的开发者,设计模式没过关?

     事实上并非如此。微软之所以这样设计,是为了实现tcp端口复用。比如,IIS web网站的端口为80,然而,你用其他程序,为它做了一个js访问用的WebService。如果没有端口复用功能,由于IIS占了tcp 80端口,则你需要把WebService改为别的端口。但是,按照js跨域问题的定义,端口不同,是会引起跨域问题,造成拒绝访问的。所以,微软把监听的事情,交给System.exe去做,来实现端口复用,这样一来,WebService也可以监听80端口了。

    这货优点逆天,但大部分估计用不着。因此,这里还是给出防火墙解决方案:

        1.在防火墙里,还是需要给服务端程序,设置白名单的。但这种设置,是为了让该程序主动能外连到其他位置,也就是说,该程序为client,连接其他Server时,就需要这样设置。

        2.如果该程序还对外提供ServerSocket端口,则需要在防火墙的高级设置里面,通过指定的类型tcp/upd与端口号,来进行设置。这种设置是为了让该程序能接受外部的连入。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
STL容器分析--unordered_map/unordered_set(C++11)发布时间:2022-07-13
下一篇:
一个年轻的码农的一个C#项目发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap