BindIPEndPointDelegate

简介: 开发人员经常会碰到老板或上头安排的项目或需求,是自己完全陌生的领域,这个时候就会非常头痛,搜索引擎能解决大部分这些方面的问题,而有时因为自身问题或干脆找不到解决方案而非常抓狂......虽然干开发有10来年了,但还是会不时碰到这种问题,现做一下总结   前段时间老板出了一个难题给我,具体要求如下:  服务器上面有两张网卡分别连接电信和联通网络,要求软件在接到A请求时,使用电信网卡访问网络,接到B请求时,使用联通网卡访问网络,必须能多线程处理请求。

开发人员经常会碰到老板或上头安排的项目或需求,是自己完全陌生的领域,这个时候就会非常头痛,搜索引擎能解决大部分这些方面的问题,而有时因为自身问题或干脆找不到解决方案而非常抓狂......虽然干开发有10来年了,但还是会不时碰到这种问题,现做一下总结

 

  前段时间老板出了一个难题给我,具体要求如下:

  服务器上面有两张网卡分别连接电信和联通网络,要求软件在接到A请求时,使用电信网卡访问网络,接到B请求时,使用联通网卡访问网络,必须能多线程处理请求。还给了提示,说他听他朋友讲,使用路由功能就可以简单实现了


 

  解决办法一:有问题上度娘,找谷哥


 

  拿到问题后,第一时间先认真分析需求,看看它会涉及几个技术点,那些自己熟悉的能搞定的,那些是陌生需要寻求帮助的

 

  上面需求看起来很简单而且又给出了提示,简单分析了一下,可能会涉及到的技术点有:网络访问、访问需要绑定网卡(MAC)、负载均衡、多线程、可能涉及路由等技术。心想使用度娘应该很快可以找出答案了,说干就干,在度娘那里输入:“c# winform 绑定网卡 ”、“c# HttpWebRequest绑定网卡”、“c#绑定MAC”、“c# 自动选择网卡”、“C# winform多网卡下设置指定网卡网关”、“C# Winform tcp/ip 通讯”、“c# route”、“c# route 切换路由”、“c# MAC网卡 负载均衡”、“多网卡绑定 负载均衡”、“c# 路由”、“c# 路由编程”......

  找了半天,只找到一些不是很靠谱的解决办法,比如使用CMD命令修改路由器的跃点来处理,但是改了后都走跃点低的那个网卡了,不能同时处理多个请求,只能中断一个个处理,并没有达到想要的目的。

  其他解决方法就是找不到......

 


 

  解决办法二:查技术文档


 

  当第一种方法不行时,那只能查看帮助文档、开发语言相关的技术资料

  

  由于使用的开发语言是用C#开发的,所以按老板的提示,拼命的查找路由相关的资料(被导入了误区了... T_T)

  除了找到修改路由器的跃点方法外,没有查到其他办法

 


  解决办法三:要多使用团队的力量


  个人解决不了的时候,这时就要动用关系,问问身边的同事、朋友或技术Q群等,看有没有好的解决方案,很多时候我们都是缺少一个好的切入点,大家讨论一下,通常灵感就来了,或者有的朋友提出了一些好的想法或提示,按着这个思路设置关键字去查询或查看相关资料,难题再也不是问题。所以一般来说(除非特殊的技术难题),这种方法都能解决问题,以前很多技术难题,都是同事朋友帮忙一起解决的,效率特别高。

 

  以上办法解决不了后,只能向同事、朋友、技术Q群等地方,广播出自己的难题,广撒网,看看能不能碰到会的朋友,提示给予一个提示。不过发出这么多询问后,得到的答复都是没接触过这方面的技术......@_@......能问的地方都问了,还是没有解决办法

 


  解决办法四:思考以上解决思路是否误入歧途了,寻找新的切入点


  当没有清晰的解决思路时,不妨放下当前问题,先去做其他事情,缓一缓后再重新处理。因为当思路误入歧途,就老是在那个圈圈里面转着,很难跳出来,而缓一缓后,头脑清晰了,就会产生更多新的想法,再慢慢逐个尝试。以前试过碰到很多其他技术问题解决不了时,使用本方法轻松的找到之前被自己忽略的地方,从而找到问题关键点所在,解决了问题

 

  在这个时候,已经研究了三四天时间了,一点解决思路都没有,心里很急燥,不过只能先强迫自己冷静下来进行认真检讨,从新理顺一下思路:本需求是否可以实现(按BOSS的说法,这是肯定可以做到的,不过从技术角度分析,实现肯定没有问题,就是要找对API才行)?本需求所使用的技术,肯定只要是网络访问、访问需要绑定网卡(MAC)、负载均衡等方面,而查询的关键字应该有问题,查找的资料也存在问题。除了使用C#调用API外,是否考虑使用C++编写插件来给C#调用?......

  最后又花了一天多时间来查询各方面的资料,还是没有办法(主要还是对该领域太陌生了,网上也没有查找到对应的解决办法),那只能使用最后一招绝杀技了......

 


  解决办法五:寻找大牛来帮忙解决


  IT技术无穷无尽,每个人都有自己最擅长的地方,所以自己处理不了一些问题也是很正常的事情,而专业的事情要交给专业的人来处理,所以必杀技就是到各大技术论坛寻找牛人来帮忙,比如上技术论坛、博客网站等地方发贴寻求帮助

 

  本问题已经到了最后山穷水尽的时候,本想在各技术论坛发贴询问的,但想想自己没有太多时间刷贴,所以厚着脸皮找一些大牛的博客,看他们那些对这一块比较熟悉,然后直接发邮件或直接留言给他们,请求他们帮忙。

 

 

  具体的解决方法如下:(在多网卡的环境下,只要在访问外网时,指定使用那一个网卡IP来对外发包,就可以非常简单的实现一开始所说的功能了)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//设置对外访问所使用网卡的IP
string  sendingIp = "192.168.0.1" ;
//设置对外访问所使用的端口
int  sendingPort = 5000;
Uri uri = new  Uri( "http://google.com" );
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(uri);
//获取对外访问的包,并指定使用那个IP(网卡)与端口来发送数据包
ServicePoint sp = ServicePointManager.FindServicePoint(uri);
sp.BindIPEndPointDelegate =
     (servicePoint,remoteEp,retryCount) =>
          {
              return  new  IPEndPoint(IPAddress.Parse(sendingIp),sendingPort);
          };
//提交请求并获取返回结果
var  data = new  StreamReader(wr.GetResponse().GetResponseStream()).ReadToEnd();

 


 

  总结


  对于初学者来说,会经常碰到各种各样的需求和问题,但并不是每一个人都能很幸运身边有一位大牛,可以随时帮忙解决各种问题,所以大多数还是要考自己来解决,这就需要使用相关的技巧。运用好的技巧可以让自己少走弯路,节省时间成本。另外过多的依赖别人,也会压缩自己的成长空间,而且大牛们也会非常的烦初学者自己都没有认真研究就随便乱提问题(多数提出的都是一些很初级的问题)。

 

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
一个免费功能强大的谷歌翻译api
分享一个免费且功能强大谷歌翻译api
8971 0
一个免费功能强大的谷歌翻译api
|
4月前
|
移动开发 JavaScript HTML5
el-input限制输入整数等分析
本文介绍了在Vue中限制el-input只能输入整数的几种方式,包括设置type为number,使用inputmode属性,自定义指令,计算属性,使用onafterpaste和onkeyup事件以及使用el-input-number的precision属性。每种方式都有其优缺点,可以根据实际需求选择合适的方式。比较建议用自定义指令的方式来实现。
153 0
el-input限制输入整数等分析
|
8月前
|
存储 编解码 前端开发
阿里云服务器计算型c5、c6、c7、c8y实例四代产品对比
目前阿里云在售的云服务器中,包含了第5代、第6代、第7代和最新第八代倚天云服务器产品,有的新手用户并不清楚这四代产品之间的差别,下面以计算型c5、c6、c7、c8y实例为例,为大家展示这四代云服务器实例在规格、CPU(核)、内存(G)、计算、存储、内存以及不同配置的指标数据等方面为大家做个对比,让大家了解一下他们之间的不同,以供参考和选择。
495 1
阿里云服务器计算型c5、c6、c7、c8y实例四代产品对比
|
9月前
|
开发框架 .NET
解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问"
解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问"
|
11月前
|
前端开发 JavaScript Java
种草 Vue3 中几个好玩的插件和配置
种草 Vue3 中几个好玩的插件和配置
|
机器学习/深度学习 人工智能 自然语言处理
万字长文科普:人工智能是什么?它又是如何工作的呢?(三)
万字长文科普:人工智能是什么?它又是如何工作的呢?(三)
323 0
万字长文科普:人工智能是什么?它又是如何工作的呢?(三)
|
应用服务中间件 API nginx
解决跨域问题 Response to preflight request doesn't pass access control check
解决跨域问题 Response to preflight request doesn't pass access control check
8804 0
apt安装 出现问题 E:无法定位软件包 yum
apt安装 出现问题 E:无法定位软件包 yum
apt安装 出现问题 E:无法定位软件包 yum
|
Web App开发 JavaScript 前端开发
【跨域】一篇文章彻底解决跨域设置cookie问题!
之前做项目的时候发现后端传过来的 SetCookie 不能正常在浏览器中使用。是因为谷歌浏览器新版本Chrome 80将Cookie的SameSite属性默认值由None变为Lax。接下来带大家解决该问题。
2536 0