明明有客户端请求但是,服务器端却总是监听不到请求


原文博客http://www.tomorrow.wiki

这些天由于项目(基于C#)需要移植了一个服务器功能,困扰了我足足一整天。

为了开启服务器监听功能新建了一个线程,在该线程里的主要代码:

server = new TcpListener(_ipAddr, TCP_Port);
server.Start();
while (true)
{
   if (server.Pending())
   {
        /***************/
   }
}


用原来的例程测试的时候是一直都可以监听到请求进入到if里面的;然而移植之后的代码,运行一切正常,却死活监听不到请求进不去if。

把IP、端口、引用、甚至.net的版本等问题都考虑过,始终是找不到问题所在。

在我将要放弃的时候在防火墙里允许了所有的vshost32.exe ,然后就成功解决了。

其实一开始的时候也有考虑到Windows防火墙的问题,但那时候只是允许了该工程exe,并没有想到竟然是vshost32.exe的问题。

然后把所有的vshost32.exe都允许通过防火墙,或者把防火墙完全关闭就把问题解决了。

原文地址:http://www.second-tomorrow.com/2017/05/21/明明有客户端请求但是,服务器端却总是监听不到-2/


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
代码是工作之余写的,代码分为转发服务器和代理服务器 先说转发服务器 转发服务器其实也可以说成是重定向服务器,比如转发服务器监听80端口,如果有浏览器用户访问服务器IP(浏览器默认请求80端口),转发服务器接收到浏览器用户的请求后,便把浏览器用户的请求重定向到本机的其它端口或者处于同一网段其它机器的指定端口 再说一下代理服务器 先说明一下,我这个代理服务器只能代理指定的网站或其它可以代理的客户,比如建在内网的SVN服务或者有些地方不能访问的外网网站。 代理服务器分为服务器端客户端,服务器端需要运行在客户端和大家都能访问的外网上,客户端需要放在能访问到需要代理的客户的网络上,也可以放在客户的本机上。 用法: 解压proxy.tar.gz 进入proxy目录,然后make,会生成三个我们需要的程序,transmit(转发服务器)、manager(代理服务器端)、client(代理客户端) 服务器端用法: ./transmit [端口](比如80) ./manager [端口](随便指定) 客户端用法: ./client -i [代理服务器IP]:[端口] -t [客户IP]:[端口] -d [客户域名] 举例: 假如我的外网服务器IP为1.2.3.4,代理的客户为网易(网易域名:www.163.com,IP:202.108.9.33) 服务器端如下运行 ./transmit 80 ./mananger 8000 客户端如下运行 ./client -i 1.2.3.4:8000 -t 202.108.9.33 -d www.163.com 或 ./client -i 1.2.3.4:8000 -t 202.108.9.33:80 -d www.163.com 然后在本机hosts文件(windows是c:windowssystem32driversetchosts linux是/etc/hosts)填加如下一行 1.2.3.4 www.163.com 这时在浏览器里敲www.163.com就可以通过代理服务器访问网易了 当然如果客户是自己申请域名,就可以直接把自己的域名指向1.2.3.4,而不用修改本机hosts文件了

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值