服务端和客户端的区别及介绍

2023-11-12

客户端和服务器通常是值互联网硬件所扮演的主要角色。客户端又称为用户端,与服务器相对应,与服务器端相互配合运行。

下面是两者的不同点:

1、定义不同

客户端:或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。
服务器端:从广义上讲,服务器是指网络中能对其他机器提供某些服务的计算机系统。(如果一个PC对服务器端外提供ftp服务,也可以叫服务器)。

2、程序编写

客户端:客户端程序不需要我们编写,可以使用IE或者FireFox等浏览器。
服务器端:需要编写Server服务端程序。

3、组成不同

客户端:浏览器既是客户端。
服务器端:中央处理器、内存、芯片组、I和O总线、I和O设备、电源、机箱和相关软件。

4、储存方式不同

客户端:不需要存储。
服务器端:包括SAS和SATA、PCIe闪存卡、NVMe闪存和双列直插式内存插槽的实现在内有多种方式部署服务器端内存。

5、服务对象不同

客户端:使用客户服务。
服务器端:为客户端服务。

服务端

服务端是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据。是实现游戏特色化 的重要途径,也是最直接可以通过游戏表现出来的技术,比如你要修改某个NPC的参数,重加载后,在游戏内立刻体现出来。

服务端是一种有针对性的服务程序。它的主要表现形式以“windows窗口程序”与“控制台”为主。一般大型的服务器都是在linux环境下搭建。运行服务端的电脑称为:服务器。

服务端项目:
一、脚本技术
是实现游戏特色化的重要途径,也是最直接可以通过游戏表现出来的技术,比如你要修改某个NPC的参数,重加载后,在游戏内立刻体现出来。
二、引擎插件技术
是指实现脚本功能的程序,可以这么说,脚本是软件,引擎是硬件。当然相对于电脑来说都是软件。
三、创意设计
四、机器技术

一般理解
服务端是一种针对性的程序,所谓的针对性就是专门为某一客户端设立的程序。原则上来讲,服务端是不具备运算能力,因为服务端同时会与多个客户端建立连接,一旦服务端进行运算的话,就会占用大量的资源,从而影响到其他客户端的通信。所以服务端通常都只具备认证与传输数据功能。

复杂性
比如游戏服务端,游戏服务端就是为游戏客户端服务的,服务的内容包含为客户端提供登录,保护游戏玩家资料,提供玩家在线游戏,这也是和单机游戏的区别。游戏客户端的登陆,需要服务端的授权。举例:游戏服务端向玩家提供登陆器,而登陆器就是连接服务端的必须工具,登陆器也可以理解为服务器的授权文件。

内容
可以简单的理解为客户端服务的一些数据,装备数据,魔法技能数据,人物资料数据
这里要说明下如果客户端和服务端的内容不一样,那么客户端就显示不了服务端的内容。比如魔兽世界更新了,那么他肯定会给我俺家提供补丁,为什么要提供补丁呢,因为客户端需要这些补丁来显示服务端更新的内容,如果不更新这些补丁那么进游戏就显示不了。

安全相关
灰鸽子就是一种C/S远程控制软件。C代表Client,即客户的意思。S代表Server,服务的意思。简而言之,灰鸽子是一种提供客户服务关系的远程控制软件。而hacker们眼里的服务端,一般就是指这种C/S控制软件。
不要以为这里的C/S软件里,你是客户而hacker们是服务者,真正说来,中了远程木马的人才是提供服务者,hacker们眼里的服务端,或者说中了服务端木马的人,就是近乎可以随意操作的对象了。
这种类型的客户端,就是一种木马病毒,我们常见的这种病毒都是灰鸽子的病毒,一般来说,刚生成的病毒很容易就会被查杀,经验老道的hacker们一般会进行压缩加花或者绑定处理,以达到免杀的效果,所以我们在运行了未知名却查不到毒的文件后,应先立刻检查进程,看看是否多了一个不知名的危险项目,如果有,立刻结束掉(用户为SYSTEM的是不可能的),然后断网查毒。

编写方式
服务端可以采用VC++或者delphi进行编写,采用socket接口发送数据到服务器,服务器返回数据,如果OK的话就直接跳转到主界面。
服务端通讯模型
大部分都会采用IOCP完成端口进行通讯。在大量玩家同时上线的情况下,如果采用socket网络模型的话,会造成阻塞导致掉线。服务端安装在Linux系统下,充分的发挥了系统的硬件以及网络带宽。

客户端

客户端或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。因特网发展以后较常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。对于这一类应用程序,需要网络中有相应的服务器和服务程序来提供相应的服务,如数据库服务,电子邮件服务等等,这样在客户机和服务器端,需要建立特定的通信连接,来保证应用程序 的正常运行。

简介
客户端也称为工作站,指连入网络的计算机,他接受网络服务器的控制和管理,能够共享网络上的各种资源。个人计算机接入因特网后,在获取因特网服务的同时,其本身就成为一台因特网上的工作站。网络工作站需要运行网络操作系统的客户端软件。
随着各类平板电脑、智能手机的出现,这些设备本质上是一个个小型化的手持计算机设备,具有相当强大的网络功能。他自然也就成了网络客户端中迅速扩大的主力队伍。

原理
客户端及伺服端的关系不见得一定建立在两台分开的机器上,同一台机器中也有这种主从关系的存在。提供服务的伺服端以及接受服务的客户端也有可能都在同一台机器上,例如我们在提供网页的服务器上执行浏览器浏览本机所提供的网页,这样在同一台机器上就同时扮演伺服端以及客户端。

发展
随着计算机网络的发展,连接形式逐渐发生变化。主流的两种网络连接模式为C/S和B/S模式,即客户端/服务器端和浏览器端/服务器端。因此,所说的客户端更应理解为c/s。即通过向客户机上写一些程序,保证即使服务器端出现故障或者维护时候,客户端依然可以在保证工作的前提下、实现脱机工作。

DNS客户端
当用户使用域名而不是IP地址访问网络资源时,系统会对需要访问的域名进行解析,即找到域名对应的IP地址。首先查询本地的域名信息缓存,如果查询成功,则返回相应的IP地址,否则向本地域名服务器发出DNS请求。

web客户端
web客户端主要指web浏览器(Browser)。其主要功能是将用户向服务器请求的web资源呈现出来,显示在浏览器窗口中。资源通常有html、pdf、image以及其他格式。主流的web页面浏览器有:微软的IE、火狐、Safari、chrome以及opera
浏览器的主要组件包括用户界面、浏览器引擎、渲染引擎、网络、UI后端、JS解释器、数据存储等。

游戏客户端
游戏客户端是将游戏中的很多资源储存起来的软件。玩家通过客户端输入指令,客户端翻译成数据发送给服务器,服务器处理完给出结果,然后再由客户端翻译成图形化表现出来告诉玩家。可以说,客户端是一个玩家和服务器之间中介。

移动客户端
移动客户端以手机为例,手机客户端就是可以在手机终端运行的软件。
无线互联网网络环境以及各种条件之下,手机客户端上网与手机WAP上网存在各自的优缺点。客户端软件需要在手机上安装才能使用;而利用手机WAP上网,第一次需要手动输入网址,将该网址保存为标签后便可以做到较为方便的访问。
在手机上完成输入网址或者众多保存的标签中查找需要的网站,确实是需要一定时间的。除了游戏类客户端,渐渐商务应用的客户端被大家熟悉和应用。

CS和BS 模式结合产品
例如手机QQ中,涉及到IM部分均为CS模式,而其他频道例如资讯、音乐、书城、股票等则通过BS方式实现。

客户端配置
客户端根据Myc1ienthttpbridge来使用队列化调用。Myclienthttpbridge可以与客户端一起托管在同一个进程、不同的进程或单独的服务器上。
Myclienthttpbridge服务使用WshttpBindIng去调用远程服务。客户端需要检索远程Internet服务的元数据(比如ImyContracthttpbridge的定义),并把它转换为一个队列契约(比如 IMyContract)。

客户端编程
若要调用服务的操作,则客户端首先要导入服务契约到客户端的本地描述(NativeRepresentation)中。如果客户端使用了WCF,调用操作的常见做法是使用代理。代理是一个CLR类,它公开了一个单独的CLR接口用于表示服务契约。注意,如果服务支持多个契约(至少是多个终结点),客户端则需要一个代理对应每个契约类型。代理不仅提供了与服务契约相同的操作,而且还包括管理代理对象生命周期及管理服务连接的方法。代理完全封装了服务的各个方面:服务的位置、实现技术、运行时平台,以及通信传输。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

服务端和客户端的区别及介绍 的相关文章

  • 从 Python 下载/安装 Windows 更新

    我正在编写一个脚本来自动安装 Windows 更新 我可以将其部署在多台计算机上 这样我就不必担心手动更新它们 我想用 Python 编写这个 但找不到任何关于如何完成此操作的信息 我需要知道如何搜索更新 下载更新并从 python 脚本安
  • Jenkins 可以检测到任何 svn 用户每次提交代码吗?

    Jenkins 可以检测到任何 svn 用户每次提交代码吗 我想知道每次 Jenkins 提交 svn user 时 有什么方法或 jenkins 插件吗 现在我用svn updateJenkins 中的 cmd 来更新 svn 您可以按照
  • VB - 以隐式方式链接 DLL

    我正在开发 VB6 图形界面 并且需要隐式链接到 DLL 这样做的动机来自于我上一个问题 https stackoverflow com questions 5194573 有问题的 DLL 使用静态 TLS declspec thread
  • 为什么 fopen 无法打开已存在的文件?

    我在 Windows XP 上使用 Visual Studio 6 是的 我知道它很旧 构建 维护 C DLL 我遇到了 fopen 无法打开现有文件的问题 它总是返回 NULL 我试过了 通过将 errno 和 doserrno 设置为零
  • 什么是WINVER?

    我正在查看一些代码 他们有这一行 define WINVER 0x0501 in stdafx h文件 为什么需要定义WINVER 它如何影响您的代码 有人可以解释一下吗 WINVER 确定构建应用程序所需的最低平台 SDK 这反过来又会在
  • 可以读取目标文件吗?

    我很好奇 obj文件 我几乎不知道它们是什么 或者它们包含什么 所以我用 Vim 文本编辑器打开它们 我在里面发现了一种类似外星人的语言 有什么办法可以理解它们代表什么以及它们的内容是什么 另外 它们的用途是什么 Thanks Sure 但
  • 使用 sed 更新 xml 属性(Windows + cygwin 和 Linux)?

    我需要使用 sed 命令对 xml 文件进行更新 但我在这方面遇到了麻烦 它需要在 Windows 使用 cygwin 和 Linux 上运行 XML 具有以下元素
  • 仅在单个端口 8080 上转发到本地主机(Windows)可能吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我知道如何在 Windows 上使用 xampp 设置本地网络服务器 我在主机文件 c windows system32 drivers etc ho
  • 在高 dpi Windows 平台上自动重新缩放应用程序?

    我正在编写一个需要在高 dpi Windows 192dpi 而不是 96dpi 上运行的 Qt 应用程序 不幸的是 Qt 框架尚不支持高 dpi 至少在 Windows 上 因此我的应用程序及其所有元素看起来只有应有尺寸的一半 有没有办法
  • Windows 窗体中的标准 Windows 菜单栏

    我注意到添加了一个MenuStrip 来自工具箱 我的表单设计不会产生像许多本机 Windows 应用程序中那样的菜单栏 相反 我得到了一个像 Visual Studio 自己的菜单栏 没有任何样式设置MenuStrip似乎模仿了更常见的本
  • Windows 上的 ffmpeg-android ndk

    我正在尝试编译 bash 文件 带有 android ndk 的 ffmpeg 我收到如下错误 arm linux androideabi gcc 无法创建可执行文件 C 编译器测试失败 Makefile 2 config mak 没有这样
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • sqlite3-ruby gem:无法构建 gem 本机扩展

    Update 看看这个后续问题 Windows 上的 Gem 更新 它坏了吗 https stackoverflow com questions 134581 gem update on windows is it broken 在 Win
  • 更改当前工作目录 VS13?

    如本文所述post https stackoverflow com questions 11979632 c sdl why does sdl loadbmp return null我调试 SDL 程序时的工作目录是相对于 vcproj 而
  • 使用 Visual C++ 在桌面上绘图

    我正在编写一个 opencv 应用程序 使用 Visual Studio VC 控制台应用程序使用激光束进行绘图 我想在桌面上画线 我知道绘图功能在 GDI32 dll 中可用 但对如何将 GDI32 dll 与我的 vc 代码集成感到困惑
  • 如何修复圆角按钮中边框和背景之间的空白?

    我为我的 WPF 应用程序创建了一个简单的按钮模板
  • 使用 Firefox 绕过弹出窗口下载文件:Selenium Python

    我正在使用 selenium 和 python 来从中下载某些文件web page http www oceanenergyireland com testfacility corkharbour observations 我之前一直使用设
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • PC 相当于 Coda 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • Docker网络模式

    目录 一 Docker网络的实现原理 二 Docker的五种网络模式 1 Host模式 2 Container模式 3 None模式 4 Bridge模式 默认 5 自定义网络模式 5 1 查看网络模式列表 5 2 查看容器信息 5 3 指
  • 解决 MySQL 中不能输入中文的问题,复制粘贴也不允许。

    解决 MySQL 中不能输入中文的问题 复制粘贴也不允许 首先 MySQL 中不能输入中文的问题与 MySQL 版本无关 与主机也无关 Debian centos 都无所谓 而我的 locale 下的语言设置都没问题 我这里的 MySQL
  • python项目结构设计_python工程结构

    在一个健康的开发周期中 代码风格 API设计和自动化是非常关键的 同样的 对于工程的架构 仓库的结构也是关键的一部分 当一个潜在的用户和贡献者登录到您的仓库页面时 他们会看到这些 工程的名字 工程的描述 一系列的文件 如果您的仓库的目录是一
  • const在指针赋值时候注意事项:assignment discards ‘const’ qualifier from pointer target type的解决方法

    const 与 define 都可以创建类似功能的符号常量 但是const可以创建const 数组 指针 指向const的指针 很重要的一点const能使不需要修改的数据变成只读的模式 include
  • java8 方法引用详解_Java8中如何通过方法引用获取属性名详解

    前言 在我们开发过程中常常有一个需求 就是要知道实体类中Getter方法对应的属性名称 Field Name 例如实体类属性到数据库字段的映射 我们常常是硬编码指定 属性名 这种硬编码有两个缺点 1 编码效率低 因为要硬编码写属性名 很可能
  • Linux系统shell脚本基础之while循环

    Linux系统shell脚本基础之while循环 一 脚本要求 二 脚本内容 1 脚本1 2 脚本2 三 执行脚本1结果 四 执行脚本2 一 脚本要求 脚本1 计算从1加到100的值 使用while循环 脚本2 输入一个数 输出1加到这个数
  • 网易游戏2011.10.15校园招聘会笔试题

    网易游戏2011 10 15校园招聘会笔试题 转载于 http blog csdn net hackbuteer1 article details 6878570 1 对于一个内存地址是32位 内存页是8KB的系统 0X0005F123这个
  • <mvc:default-servlet-handler />到底有什么用

    tomcat容器的web xml中有一个defaultServlet 用于处理静态资源 映射路径是 我们自定义的web xml最终相当于会与容器的web xml合并 而自定义DispatchServlet一般也是使用 导致容器中的defau
  • python安装报错error writing to file:......

    今天换了win10 64电脑 安装python3 6 8时 报错 error writing to file 安装时 右键 以管理员身份运行 安装成功 转载于 https www cnblogs com shuaishuaidefeizhu
  • linux启动时有文件错误,Linux 无法启动常见的几种原因及解决办法

    导致 Linux 无法启动的原因有很多 下面良许小编就将常见的几种原因及解决办法进行详述 希望对大家有所帮助 文件系统配置不当 如 etc inittab文件 etc fstab 文件等配置错误或丢失 导致系统出现故障 以至于无法启动 非法
  • 应急响应-钓鱼邮件的处理思路溯源及其反制

    0x00 钓鱼邮件的危害 1 窃取用户敏感信息 制作虚假网址 诱导用户输入敏感的账户信息后记录 2 携带病毒木马程序 诱导安装 使电脑中病毒木马等 3 挖矿病毒的传输 勒索病毒的传输等等 0x01 有指纹的钓鱼邮件的溯源处理 从邮件中获取相
  • buildroot添加新硬件内核支持

    1
  • 对开发来讲,业务重要还是技术重要?

    很多开发者为天天写业务代码无暇提升技术而焦虑 苦恼 比如 又如 又如 再如 那么 作为开发者 到底该怎么面对 写业务代码 这件事呢 今天我们就从以下几个方面聊聊这个话题 什么是业务 业务和技术的关系 业务和因解决业务而衍生的业务 对业务的态
  • Bitbucket代码迁移到Gitlab

    首先需要确定使用具有一定权限的账号进行迁移 然后在迁移的机器上配置git环境 添加账户信息 git config global user name XXX git config global user email XXX XXXX com
  • uni-app实现多选

  • word2016解决mathtype无法加载mathpage.wll文件问题

    参考文章 https www cnblogs com weiyouqing p 9082353 html 首先需要找到在Word加载的两个文件 一个是MathType Commands 6 For Word2010 dotm 文件位置 C
  • 拥塞控制算法

    TCP拥塞控制算法的目的可以简单概括为 公平竞争 充分利用网络带宽 降低网络延时 优化用户体验 然而就目前而言要实现这些目标就难免有权衡和取舍 算法分类 基于丢包策略的传统拥塞控制算法的几个迭代版本 如图所示 与此同时还有一类算法是基于RT
  • 计算机二级(Python)__第三方库

    Python第三方库依照安装方式灵活性和难易程度有3个方法 建议一次使用 这三个方法是 pip工具安装 自定义安装和文件安装 pip工具安装 最常用且最高效的Python第三方库安装方式采用pip工具安装 pip是Python官方提供并维护
  • spring深入学习(十九) IOC 之 Factory 实例化 bean

    这篇我们关注创建 bean 过程中的第一个步骤 实例化 bean 对应的方法为 createBeanInstance 如下 protected BeanWrapper createBeanInstance String beanName R
  • 服务端和客户端的区别及介绍

    客户端和服务器通常是值互联网硬件所扮演的主要角色 客户端又称为用户端 与服务器相对应 与服务器端相互配合运行 下面是两者的不同点 1 定义不同 客户端 或称为用户端 是指与服务器相对应 为客户提供本地服务的程序 服务器端 从广义上讲 服务器