Skip to content

服务器环境搭建

DinS          Written on 2017/11/13

本文介绍一个与代码无关的但是对于网络通讯较重要的内容,重在理解,代码方面可见《asio基础使用方法》。

之前都是在说Socket编程的事,但是如果网络环境没有搭建好Socket是成功不了的。网络环境搭建,或者说也是服务器配置问题,听起来高大上,实际上任何一台能够上网的机器都可以做服务器。
虽然有许多理由促使你单独搞一台服务器或者购买相关业务,但是确实可以用家用机搭建服务器,因此本专题将使用一台家用PC搭建简易的服务器,希望通过这个例子让读者明白搭建服务器并不是什么高深的事。

前提条件是有一台可以上网的电脑,上网方式没什么特殊的,就是正常的家用机上网。
在开始搭建环境前先说一下必要的知识。我们知道IP地址的个数是有上限的(IPv4),因此对于通常使用而言,都是按需分配,即当要上网时ISP供应商会临时提供一个IP地址,一旦不需要上网则ISP会收回这个IP。也就是说,每次上网时的IP是不一样的。这样一来IP资源匮乏的情况会得到缓解。但是对于搭建服务器来说就不是什么好消息了,因为服务器IP最好保持一致否则客户端那边就连不到了。不过这不影响我们在这里展示如何搭建服务器,读者只需要知道这里展示的过程是在同一个IP的情况下实施的即可。

另一个事实是并不是每一台上网的设备都分配了一个外网IP,实际上在目前环境下一个IP地址代表的是一个网络节点,并非仅仅是一台设备。现在除了电脑外,各种移动设配也很多,如果每个设备都分配一个IP那肯定是不够用的。通常的配置是一个路由器管理内网和外网,内网的设备由路由器分配一个内网IP,外网IP收发的信息通过路由器转送给内网各个设备。

图示如下:

这也解释了为何在家用机上调一个服务端程序收不到消息,但是调客户端程序可以发送信息的原因。如果外界有消息过来,会先到路由上,但是路由不知道这个消息是发给哪个内网IP的,所以就不处理,于是服务端就收不到任何消息。
所以我们要做的其实很简单:设置路由器的转发规则。

路由器有很多厂家都在做,下面展示以TPLink为例,其他的也大同小异。
第一步打开控制台,输入ipconfig,会得到一系列参数。

找到默认网关的值,在浏览器中输入就可以进到路由器的设置页面。输入密码,会看到网络状态页面。第二步是找到外网IP。

这个IP就是客户端要连接的地址。
第三步设置转发规则。

在这里可以定义外网接收到的信息如何转发给内网设备,点击添加,然后输入相应内容。

服务端口号就是外网IP接收信息的端口号,内部端口号就是内网IP接受信息的端口号。
这两个端口号跟Socket程序中要对应。这里我程序里写的是6123,所以填6123。IP地址就是内网IP地址,可以通过ipconfig找到。如果输错了信息也不会发送到你想要的设备上。确认后就可以看到如下页面。

还是很清晰明了的。
转发规则就设置完毕了,其作用就是外网IP端口6123接收到的所有信息转发给内网IP为192.168.1.104的设备上,端口为6123。

第四步可以开始测试了。
本人特地骑车30分钟跑到了另一台电脑上,真正的远程测试,现实网络环境,在那台电脑上首先要做的是ping。

ping的作用是查看这台电脑与IP地址之间能否通信,结果是可以的。
然后修改客户端代码,连接到对应IP对应端口,运行。

有反应,说明服务端成功收到了信息。
再看看服务端情况(当然因为本人不在委托他人截屏的)。

确实收到了客户端的信息,还打印出了客户端IP地址。

这样一来我们就用家用机简单搭建了服务器环境,实现了真实网络环境下的socket通信,一点也不难吧?搭建服务器没有什么高深莫测的地方。
当然你可能会问:这样就算搭建完了?什么数据库等等都在哪里?
我想说的是,所谓服务器,是相对于客户机而言的概念,数据库等等之类的并非服务器的固有属性,只不过因为要处理大量数据才逐渐产生了相应的东西。
就最本质的概念而言,这里的家用机已经是服务器了,因为其响应了客户端的消息。

一旦把握了最本质的东西,其他外延都是逐渐填上去的,也可以很好地理解。读者可以根据自己的情况来增加。

当然这里用家用机当服务器仅仅是为了向读者说明服务器的本质属性以及打消读者对服务器的过于高深的理解。实际中有许多理由阻止我们把家用机当服务器:
1.每次上网外网IP都会重新分配,这个显然不行,要么你就永远不下线(即一直保持开机状态而且不能有意外事件,比如停电),要么就使用其他一些辅助手段比如DDNS。或者买一个ISP的固定IP服务。
2.家用机的硬件配置无法满足大量网络数据处理。实际上家用机的强项一般在于显卡之类的,一旦网络流量过大家用机的计算速度就跟不上了。
3.家用机的网速一般也就适用于几个家庭成员同时上网,如果有几百个客户端同时连接那么网速估计会很卡。
4.安全因素也是需要考虑的。成为服务器就意味着整个互联网世界都可以访问你,你应该不想在这样的机器上输入网银密码吧?

理解了最本质的东西,破除了迷信之后,到底选择什么方式做服务器就是读者自己的选择了。

代开银行存款证明公司益阳资信证明哪里有河源存款证明服务商襄阳出国留学存款证明订做泰州定期存单作用邢台做银行存款证明林芝定期存单庆阳定期存单哪里有海口存款证明费用厦门资金证明样本长春留学存款证明模板普洱留学存款证明哪家比较好阳泉做出国留学存款证明盘锦定期存单模板鞍山代开企业资信证明张家界资信证明哪家比较好滁州企业资金证明价格邵阳资金证明代开武汉开留学存款证明银川存款证明开具遵义制作定期存单中卫出国留学资金证明哪家专业巴彦淖尔银行存款证明信誉保证聊城定期存单代发衡水银行定期存单费用许昌留学存款证明哪家比较好宜宾存款证明价格营口资信证明哪家专业毕节办银行定期存单山南代做银行定期存单金昌代办企业资金证明香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声汪小菲曝离婚始末卫健委通报少年有偿捐血浆16次猝死单亲妈妈陷入热恋 14岁儿子报警雅江山火三名扑火人员牺牲系谣言手机成瘾是影响睡眠质量重要因素男子被猫抓伤后确诊“猫抓病”中国拥有亿元资产的家庭达13.3万户高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了男孩8年未见母亲被告知被遗忘张家界的山上“长”满了韩国人?倪萍分享减重40斤方法许家印被限制高消费网友洛杉矶偶遇贾玲何赛飞追着代拍打小米汽车超级工厂正式揭幕男子被流浪猫绊倒 投喂者赔24万沉迷短剧的人就像掉进了杀猪盘特朗普无法缴纳4.54亿美元罚金周杰伦一审败诉网易杨倩无缘巴黎奥运专访95后高颜值猪保姆德国打算提及普京时仅用姓名西双版纳热带植物园回应蜉蝣大爆发七年后宇文玥被薅头发捞上岸房客欠租失踪 房东直发愁“重生之我在北大当嫡校长”校方回应护栏损坏小学生课间坠楼当地回应沈阳致3死车祸车主疑毒驾事业单位女子向同事水杯投不明物质路边卖淀粉肠阿姨主动出示声明书黑马情侣提车了奥巴马现身唐宁街 黑色着装引猜测老人退休金被冒领16年 金额超20万张立群任西安交通大学校长王树国卸任西安交大校长 师生送别西藏招商引资投资者子女可当地高考胖东来员工每周单休无小长假兔狲“狲大娘”因病死亡外国人感慨凌晨的中国很安全恒大被罚41.75亿到底怎么缴考生莫言也上北大硕士复试名单了专家建议不必谈骨泥色变“开封王婆”爆火:促成四五十对测试车高速逃费 小米:已补缴天水麻辣烫把捣辣椒大爷累坏了

代开银行存款证明公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化