您的位置:首页 > 编程语言 > C语言/C++

跨平台C++服务器程序开发 (2)服务器端口

2016-03-01 23:46 323 查看

服务器&客户端

现实中有许多软件是分为客户端和服务器两部分,常见的比如Mysql,分为Mysql Client和Mysql Server,Client负责输入命令和结果显示,Server负责存储数据和返回查询结果。

再比如网络游戏,玩一款游戏需要先下载客户端,启动launcher登录器后,需要选择服务器,比如电信1区,然后连接服务器进入游戏。

可以说,任何需要联网的软件都需要服务器程序。客户端和服务器进行交互的方式就是网络,因此对于服务器程序来说,网络消息处理是最基础、最关键的功能。

客户端程序只由一人操作,而服务器程序需要同时服务大量用户。同样是程序崩溃,一个客户端崩溃只会影响一个用户,而一个服务器程序崩溃则影响所有用户,因此服务器程序要求高稳定性、高效率。

Created with Raphaël 2.1.0客户端网络服务器

IP地址&端口

在互联网时代,任何接入网络的两台设备间都可以通信。通信需要知道对方的联系地址,比如打电话我们需要知道对方的手机号,网络通信则需要知道对方设备的ip地址,ip地址就相当于网络世界的身份证。

但是一个设备上有很多联网程序同时运行,如何保证只会被指定的某个程序收到,这就需要端口号。如果说ip地址能指定一台设备,那么端口号可以指定某个程序,而连接服务器就需要服务器程序的ip和端口。

查看开放端口

一台设备可使用端口范围为1~65535(2字节大小),客户端只能连接已开放端口。 若要查看哪些端口已经开放,可使用netstat命令。

测试环境:

1. 在VMWare虚拟机里启动Centos7 Linux系统

2. 在Windows系统里使用SecureCRT软件远程连接Centos7系统

(Centos7所在的虚拟机ip地址为192.168.1.104, Windows系统的ip地址为192.168.1.102,VMWare、Centos7、SecureCRT软件请自行下载安装)

SecureCRT远程操作Linux界面:



执行命令: netstat -ant



命令结果字段解释

字段解释
Prototcp协议类型,如tcp表示IPV4,tcp6表示IPV6
Local Address本机地址,如0.0.0.0:22中,0.0.0.0表示本机通配地址,22表示端口22
Foreign Address对方地址,如第二行的192.168.1.102:1965,其中192.168.1.102表示对方的ip地址,102表示对方程序的端口号
State套接字状态,如
LISTEN
表示监听状态,
ESTABLISHED
表示就绪状态
综合解释:

第一行表示Centos的22号端口处于Listen监听状态,任意外部ip地址和端口都可连接该端口。

第二行表示SecureCRT通过网络连接Centos的22号端口,其中SecureCRT使用的ip和端口分为192.168.1.102和1965,Centos内部的远程服务程序ssh使用的ip和端口分别为192.168.1.104和22。

Created with Raphaël 2.1.0SecureCRT(192.168.1.102:1965)Centos-ssh(192.168.1.104:22)

由此可见,Centos开放了22号端口,并处于监听状态,因此SecureCRT软件可通过网络连接Centos服务器的22号端口,建立Socket连接,实现网络通信,达到远程操控的作用。

本文介绍了服务器程序的基本概念,ip和端口的作用,以及查看已开放端口,希望对大家有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: