当前位置:文档之家› RhinoScript入门

RhinoScript入门

RhinoScript入门
RhinoScript入门

RhinoScript入门

RhinoScript 是以VB语法作为语言基础的,任何一个RhinoScript脚本运行在当前的Rhino环境中时都可以使用Rhino本身的函数和子程序调用,以及某些Rhino环境变量。注意在脚本或者其他插件中,Rhino 的当前环境被称之为“文档(document)”。

RhinoScript实际为文本文档,为了实现各版本之间的兼容性,请使用标准的ASC编码的脚本文件,即使是注释也不要使用中文。一般的RhinoScript格式后缀为rvb。

一,RhinoScript的载入

在使用RhinoScript前需要将rvb文件载入到文档中。常用的方法如下:

如上图所示,可以使用Tools|RhinoScript|Load,来加载rvb文件。也可以在Rhino命令行中输入“LoadScript”命令进行载入。

在菜单或者命令操作之后会有如下的对话框出现:

点击ADD按钮可以加入新的RVB文件到列表中。在列表中选择一个文件,点LOAD即可加载。点REMOVE

即可从列表中删除一个文件。

RhinoScript加载规则如下:

如果RVB文件中只包含子程序或者函数的定义,这时候没有“裸语句”,Rhino仅仅检查语法规则,不运行任何一个子程序或者函数。但RVB文件中还包含“裸语句”,这时Rhino会解吸并运行这个脚本。

二,RhinoScript作为命令运行

在RhinoScript被载入之后,这个RVB文件内部的一些函数或者子程序便可以当作特殊命令被使用,但并不是RVB文件内的所有函数或者子程序可以被当作特殊命令使用,只有满足如下条件的子程序才可以被使用。使用条件是:

必须为标准的VB子程序,并且这个子程序不可以带任何参数。

如下一段摘自Rhino4 RhinoScript帮助文档的程序

Sub Test1()

MsgBox "Test1"

End Sub

Sub Test2(strMessage)

MsgBox strMessage

End Sub

Function Test3()

MsgBox strMessage

Test3 = strMessage

End Function

其中只有Test1可以被当作命令使用。Test2带有参数,而Test3是函数,所以他们不能被使用。

使用VB子程序的特殊命令是:-RunScript “子程序名称”,注意前面有减号“-”

如上面的代码运行:

-RunScript Test1

就可以调用Test1()子程序

可以用Tools|RhinoScript|Run菜单命令来管理或者运行RhinoScript命令,也可以用RunScript命令完成同样的功能。执行菜单命令或者RunScript命令后会出现如下的对话框。

里面有当前所有可用子程序名称。

下面给出一段实际代码:

'rhomboid.rvb

Function set_rhomboid()

'define local var

Dim ArrPoint(3), PointName(3), LineName(3), V ector, GroupName

'get the first point

ArrPoint(0) = Rhino.GetPoint("input the first point")

If False = IsArray(ArrPoint(0)) Then

Exit Function

End If

'get the identifier string of the point, for using

PointName(0) = Rhino.AddPoint(ArrPoint(0))

'get the second point

ArrPoint(1)=Rhino.GetPoint("input the second point")

If False = IsArray(ArrPoint(1)) Then

Exit Function

End If

PointName(1) = Rhino.AddPoint(ArrPoint(1))

'get the third point

ArrPoint(2)=Rhino.GetPoint("input the third point")

If False = IsArray(ArrPoint(2)) Then

Exit Function

End If

PointName(2) = Rhino.AddPoint(ArrPoint(2))

'init the V ector and ArrPoint(3) into array type

V ector = Array(0,0,0)

ArrPoint(3) = Array(0,0,0)

'calculate the ArrPoint(3)

V ector(0) = ArrPoint(1)(0) - ArrPoint(0)(0)

V ector(1) = ArrPoint(1)(1) - ArrPoint(0)(1)

V ector(2) = ArrPoint(1)(2) - ArrPoint(0)(2)

ArrPoint(3)(0) = ArrPoint(2)(0) + V ector(0)

ArrPoint(3)(1) = ArrPoint(2)(1) + V ector(1)

ArrPoint(3)(2) = ArrPoint(2)(2) + V ector(2)

'add ArrPoint(3) to document.

'you can delete it, while delete all operation of PointName(3)

PointName(3) = Rhino.AddPoint(ArrPoint(3))

'add 4 lines to document.

LineName(0) = Rhino.AddLine(ArrPoint(0), ArrPoint(1))

LineName(1) = Rhino.AddLine(ArrPoint(0), ArrPoint(2))

LineName(2) = Rhino.AddLine(ArrPoint(1), ArrPoint(3))

LineName(3) = Rhino.AddLine(ArrPoint(2), ArrPoint(3))

'delete help points from PointName(0) to PointName(3)

Rhino.DeleteObject(PointName(0))

Rhino.DeleteObject(PointName(1))

Rhino.DeleteObject(PointName(2))

Rhino.DeleteObject(PointName(3))

'make a new group and add 4 lines(from LineName(0) to LineName(3)) to the group

'like this, user can operate this rhomboid as a single object

GroupName = Rhino.AddGroup()

If False = Rhino.IsGroup(GroupName) Then

Exit Function

End If

Rhino.AddObjectToGroup LineName(0), GroupName

Rhino.AddObjectToGroup LineName(1), GroupName

Rhino.AddObjectToGroup LineName(2), GroupName

Rhino.AddObjectToGroup LineName(3), GroupName

'return this gruop name for more operation

set_rhomboid = GroupName

End Function

Sub setrb()

set_rhomboid()

End Sub

'-RunScript setrb

Rhino.AddAlias "addrh", "_-RunScript setrb"

上面一段代码只有一个函数,和一个无参子程序,来提供给Rhino命令使用。整个程序只有一个函数

set_rhomboid产生功能。

set_rhomboid先让用户输入三个点,然后函数使用这三个点计算第四个点,然后由这四个点连成一个平行四边,并将作为标记的四个点删除,只留下四条线段。并将这四条线段加入到同一个组内,使这个平行四边成为一个对象。

注意最后一行的“裸语句”Rhino.AddAlias "addrh", "_-RunScript setrb"。

这是一个Rhino子程序Rhino.AddAlias的调用,作用是给一段标准的Rhino命令起一个“别名”,之后就可以使用这个别名来实现这个Rhino命令的功能。本例中为"_-RunScript setrb",注意前面的“_”是不能少的。然后就可以在命令行里输入addrh来实现-RunScript setrb命令的作用,而实际上就是最终调用函数set_rhomboid()。

三,启动Rhino时自动加载RVB文件

一般情况下当然是希望Rhino时自动加载一些RVB,来扩展Rhino的功能,方法如下:

TOOLS|Options

弹出如下对话框:

选择RhinoScript一项,在右端方可进行启动加载脚本文件的操作。

另外RhinoScript函数:Rhino.AddStartupScript (strScriptFile [, intIndex])也可以完成这个操作

strScriptFile是一个RVB文件路径,intIndex是一个0起始索引,用来表示这个strScriptFile在加载列表中的加载顺序,0索引先加载。函数成功则返回一个整数,其为加入的新RhinoScript在加载列表中的索引。调用失败返回Null。

四,自定义Rhino工具条

在Rhino中可以由用户自定义一些工具条,每个工具条按钮可以关联一个基本的Rhino系统命令,也可以关联到一个自定义的别名命令(使用Rhino.AddAlias)。下面介绍如何填加工具条。

填加工具条只前要先编辑工具条。Rhino4的环境中带有工具条的操作工具。使用方法如下。

Tools|ToolBar Layout

打开如下对话框,在这里可以完成Rhino所有的工具条的编辑,载入和关闭操作。

注意,在Rhino中有工具条集合(toolbar collection)的概念,一个工具条集合中可以包含多个工具条,只有在同一个工具条集合中的工具条才可以级联。如上图,上面的列表框中的“default”就是当前载如入的工具条集合,而下面的是这个工具条集合的所有工具条,前面的复选框表示工具条是否作直接显示。注意没有勾选的工具条虽然不被直接显示,但可能被作为直接显示工具条的下级级联工具条。

制作新工具条的方法如下:

在这个对话框中,File|New,指定一个新的文件名,注意后缀为“.tb”。这时候就会生成一个与文件名同名的工具条集合在列表中出现。选中这个工具条集合然后用Toolbar|New为选中的这个工具条集填加工具条,如下图:

在工具条上右键“Add Button”可以为工具条添加新的按钮,刚建立的工具条会有一个默认按钮。

下面讲述按钮的编辑方法。下面的工具条已经添加好了一定数量的按钮。

删除多余的按钮:将鼠标停在要按钮按住SHIFT,正键(一般是左键)拖动要删除的按钮,见它拖出工具条范围,放开鼠标就可以删除这个按钮。

编辑按钮:将鼠标停在要按钮按住SHIFT,反键(一般是右键)点击要编辑的按钮,就会弹出如下对话框。

Rhino工具条按钮的正反键都可以执行不同的命令。可以在“Left mouse button command”或者“Right mouse button command”编辑框里进行动作编辑,具体的编辑方式在下一部分讲述。Tooltips里面的两个编辑框主要用来编辑按钮的鼠标浮动提示。Linked toolbar中可以给按钮设置一个级联工具条。级联工具条只能与当前的工具条在同一个在工具条集合里面。拥有下级工具条的按钮有下脚会有一个三角形的小标记。任何无

动作的鼠标点击都可以弹出下级工具条。点击Edit Bitmap按钮可以编辑按钮的图形。如下:

在一切编辑好之后在Toolbars对话框中保存这个工具条集合到文件中。

五,工具条脚本程序

所有的工具条动作最终都必须成为对Rhino插件的调用,这里先介绍RhinoScript中可以使用的脚本程序的设计方式。

先介绍几个常用的RhinoScript工具条函数。

Rhino.ToolbarCollectionNames ()

得到当前载入的所有工具条集合。工具条集合在RhinoScript中以字符串方式表示,而且对于同一个文件中的工具条集合名字不因为多次载入而变化。

函数成功则返回一个装有所有名字字符串的数组。失败返回NULL。

Rhino.OpenToolbarCollection (strFile)

从文件载入一个工具条集合(注意Rhino的一个工具条集合文件进保存一个工具条集合)。

strFile为文件路径。函数成功返回工具条集合名字字符串,失败返回NULL。

Rhino.ShowToolbar (strName, strToolbar)

显示一个工具条。strName为工具条集合的名字字符串,strToolbar为工具条名字字符串,就是在“Toolbar Properties”对话框中输入的。

如果成功显示这个工具条集合则返回TRUE ,否则返回FALSE或者NULL。如果返回NULL表示调用失败,返回FALSE表示无法成功显示。

Rhino.IsToolbarVisible (strName, strToolbar)

确定一个工具条是否为直接显示的工具条。参数与Rhino.ShowToolbar相同。返回值含义。

NULL:调用失败

TRUE:此工具条是直接显示的

FALSE:此工具条未被显示

Rhino.CloseToolbarCollection (strName [, blnPrompt])

关闭(卸载)一个工具条集合,卸载之后这个集合中说有的工具条便不在被显示。

strName:要卸载的工具条集合的名字

blnPrompt:BOOL型参数,为TRUE表示询问是否将工具条集合的改过保存到文件中。为FALSE表示不询问也不保存。

下面写一个工具条加载函数

Function TestRS_LoadToolBar()

Dim arrNames, strName

Dim Flag

Flag = 0

'find out needed toolbar collection "mytesttoolbar" from all loaded toolbar collections

arrNames = Rhino.ToolbarCollectionNames()

If IsArray(arrNames) Then

For Each strName In arrNames

If "mytesttoolbar" = strName Then

'find the needed toolbar collection, set the flag = 1

Flag = 1

Exit For

End If

Next

End If

'if this toolbar collection is not loaded, open the toolbar collection.

'note the search paths, because the current path maybe one of this script file path, System and Rhino main path.

If 0 = Flag Then

strName = Rhino.OpenToolbarCollection("mytesttoolbar.tb")

If (V arType(strName) = vbNull) Then

strName = Rhino.OpenToolbarCollection("..\script_plug\mytesttoolbar.tb")

End If

If (V arType(strName) = vbNull) Then

strName = Rhino.OpenToolbarCollection("script_plug\mytesttoolbar.tb")

End If

End If

'test the main toolbar in this collection is visible or not

'if disvisible, show it

If (V arType(strName) <> vbNull) Then

If False = Rhino.IsToolbarVisible(strName, "Toolbar_test_1") Then

Rhino.ShowToolbar strName, "Toolbar_test_1"

TestRS_LoadToolBar = strName

Else

TestRS_LoadToolBar = Null

End If

Else

TestRS_LoadToolBar = Null

End If

End Function

函数很简单,先检查“mytesttoolbar”工具条集合,是否已经被载入,如果没有被载入则载入它。Flag仅仅是个标志。注意载入时文件没测试的内容。这个函数使用了相对路径来进行载入的,这样可以无所谓文件放置的位置。在不同的情况下“当前路径”可能是,“System”,“System”所在路径,脚本文件所在路径。注意我这里把mytesttoolbar.tb文件放在了script_plug目录下,script_plug目录在“System”所在路径目录下,也就是Rhino所在的路径下。

通过正常打开或者已经打开而得到工具条集合名字之后,用Rhino.IsToolbarVisible检查主工具条(Toolbar_test_1)是否是被显示的,如果没有被显示则显示它。最后函数返回工具条集合的名字。

六,工具条综合应用

这里我先把绘制平行四边型的功能关联到一个按钮上

先把函数用一个无参子程序调用,来形成一个Rhino命令,如下:

Sub add_rhomboid()

set_rhomboid()

End Sub

SHIFT+反键点击一个按钮,给左键加一个脚本命令。

在Left mouse button command编辑框里加入

!-RunScript add_rhomboid

足以前面的“!”不能少。这样在左键点击“i”按钮时相当于执行了-RunScript add_rhomboid命令。

一般这样的工具条还可以提供一个卸载功能,所以先写一个卸载函数,也将其用无参子程序调用,如下:Function TestRS_UnLoadToolBar()

'close the toolbar collection

Rhino.CloseToolbarCollection "mytesttoolbar", True

End Function

Sub UN_LOAD_RS_TEST_TOOLBAR()

TestRS_UnLoadToolBar()

End Sub

用同样的方式给“禁止按钮”加一行命令。

!-RunScript UN_LOAD_RS_TEST_TOOLBAR

最后保存对mytesttoolbar工具条集合的修改。然后就可以生效了。注意:用上面的方式卸载工具条集合的时候第一次载入时,不能卸载,而之后就会正常,不知道为什么?希望有高手指点。

最后注意,所有的RhinoScript都是出现在RVB文件中的,所以想正常执行工具条按钮的动作必须先载入相应的RVB文件。所以最方便的方法就是用RVB文件载入工具条集合。在载入RVB文件时载入工具条集合。具体方法就是在RVB文件最后加一些裸语句来完成载入工作。很简单,直接调用上面的

TestRS_LoadToolBar就可以了。

TestRS_LoadToolBar()

还有一点在编写RVB文件时要注意,在一个Rhino环境中(文档中),所有的被载入的RVB文件,命令行,以及用Rhino的VBscript编辑器正在测试的脚本都使用的是同一个环境。也就是说,他们可以相互访问变量,这样如果有同名的变量存在就会出现冲突,这个设计程序时要注意。而且Rhino的VBscript编辑器对于同一段程序先测试运行之后,这段程序便成为当前环境的一部分,所以最好的测试方式就是把程序写到子程序或者函数中,然后用裸语句调用。子程序或函数一般不会产生类型冲突,这样比较保险。

七,从HTML对话框获得数据

Rhino支持从一个HTML的文件得到数据,对话框的内容就是HTML文件描述的页面内容。同时HTML 内部可以按照DHTML规则运行VBSCRIPT脚本程序,并且可以向主程序传回数值。

首先介绍一个函数:

Rhino.HtmlBox (strFileName [, arrArguments [, strOptions]])

它可以用HTML文件建立一个模太对话框

strFileName

HTML文件路径,当前路径为RHINO所在路径。

arrArguments

传入HTML文件的参数,可以是任意类型。可由HTML环境中的window.dialogArguments得到。

strOptions

对话框窗口的初始化参数,都是字符串,如下:

dialogHeight:sHeight

窗口高度

dialogLeft:sXPos

窗口左上角X坐标

dialogTop:sYPos

窗口左上角Y坐标

dialogWidth:sWidth

窗口宽度

这4个数据的单位可以是px或者em,默认是em

center:{ yes | no | 1 | 0 | on | off }

页面是否居中

resizable:{ yes | no | 1 | 0 | on | off }

窗口大小是否固定

scroll:{ yes | no | 1 | 0 | on | off }

窗口是否有滚动条

strOptions这个参数是一个形如:“XXX1:xxx1;XXX2:xxx2”这样形式的字符串。

函数失败返回Null

函数成功返回从HTML页面返回的值,是V ariant类型,在使用的时候最好使用基础类型,比如字符串,来表达复杂类型值。

在HTML页面中用window.returnV alue返回。

HTML页面从window.close调用返回。

下面一个组程序,它从一个HTML页面返回四个数据,两两一组,组成2个2D点坐标,然后主掉程序使用这两个点在X-Y平面上绘制平行四边形。

HTML文件

Communication Dialog

Communication Dialog

X1Y1
X2Y2

注意OnOk过程。sResult的值是一个“;”分隔的四个数据的字符串,下面注意将这单个字符串变成4个DOUBLE数据的方式。

Function GetParFromHtml()

Dim ReturnV alue, ReturnString

Dim RetArray(1)

ReturnV alue = Rhino.HtmlBox("script_plug\testdlg.html")

PRINT typename(ReturnV alue)

If ("Empty" = typename(ReturnV alue)) Or ("Null" = typename(ReturnV alue)) Then

GetParFromHtml = Null

Exit Function

End If

ReturnString = Split(ReturnV alue, ";")

If False = IsArray(ReturnString) Then

GetParFromHtml = Null

Exit Function

End If

RetArray(0) = Array(0, 0, 0)

RetArray(0)(0) = CDbl(ReturnString(0))

RetArray(0)(1) = CDbl(ReturnString(1))

RetArray(0)(2) = 0.0

RetArray(1) = Array(0, 0, 0)

RetArray(1)(0) = CDbl(ReturnString(2))

RetArray(1)(1) = CDbl(ReturnString(3))

RetArray(1)(2) = 0.0

GetParFromHtml = RetArray

End Function

Split(ReturnV alue, ";")将ReturnV alue按照符号";"将ReturnV alue分成字符串数组,并返回数组CDbl将字符串转化为DOUBLE数据。

这个函数GetParFromHtml就是从HTML得到必要数据并将这些数据变成两个点放在数据RetArray返回。下面的程序就是利用这两个点和(0,0,0)点绘制平行四边形。

Function add_rhomboid(PointSrc, Point0, Point1)

Dim ArrPoint(3), LineName(3), Vector, GroupName

If (False = IsArray(Point1)) Or (False = IsArray(Point0)) Or (False = IsArray(PointSrc)) Then

Exit Function

End If

V ector = Array(0, 0, 0)

ArrPoint(0) = PointSrc

ArrPoint(1) = Point0

ArrPoint(2) = Point1

'init the V ector and ArrPoint(3) into array type

V ector = Array(0,0,0)

ArrPoint(3) = Array(0,0,0)

'calculate the ArrPoint(3)

V ector(0) = ArrPoint(1)(0) - ArrPoint(0)(0)

V ector(1) = ArrPoint(1)(1) - ArrPoint(0)(1)

V ector(2) = ArrPoint(1)(2) - ArrPoint(0)(2)

ArrPoint(3)(0) = ArrPoint(2)(0) + V ector(0)

ArrPoint(3)(1) = ArrPoint(2)(1) + V ector(1)

ArrPoint(3)(2) = ArrPoint(2)(2) + V ector(2)

'add 4 lines to document.

LineName(0) = Rhino.AddLine(ArrPoint(0), ArrPoint(1))

LineName(1) = Rhino.AddLine(ArrPoint(0), ArrPoint(2))

LineName(2) = Rhino.AddLine(ArrPoint(1), ArrPoint(3))

LineName(3) = Rhino.AddLine(ArrPoint(2), ArrPoint(3))

'make a new group and add 4 lines(from LineName(0) to LineName(3)) to the group

'like this, user can operate this rhomboid as a single object

GroupName = Rhino.AddGroup()

If False = Rhino.IsGroup(GroupName) Then

add_rhomboid = Null

Exit Function

End If

Rhino.AddObjectToGroup LineName(0), GroupName

Rhino.AddObjectToGroup LineName(1), GroupName

Rhino.AddObjectToGroup LineName(2), GroupName

Rhino.AddObjectToGroup LineName(3), GroupName

'return this gruop name for more operation

add_rhomboid = GroupName

End Function

Sub AddRhomboidFromHtml()

Dim Point

Point = GetParFromHtml()

If ("Empty" = typename(Point)) Or ("Null" = typename(Point)) Then

Exit Sub

End If

add_rhomboid Array(0, 0, 0), Point(0), Point(1)

End Sub

add_rhomboid用来绘制平行四边形,利用PointSrc-Point0,PointSrc-Point1两条线段作为平行四边形的两边,并计算出另两个边,将四条线段绘制并填加到一个组内。

AddRhomboidFromHtml就是利用将上面两个函数绘制这个平行四边形。对话框如下:

注意("Empty" = typename(Point)) Or ("Null" = typename(Point))这种类型判断方式,这样是比较安全的。当在对话框点关闭按钮关闭时返回值是EMPTY类型。

下面加一个绘制六面体的函数:

Function add_hexahedron(Point0, PointList, flag)

Dim AllLines(11)

Dim LineCurve(3)

Dim MidPoint(3)

Dim x, y, z, i

Dim GroupName

If False = IsArray(PointList) Then

add_hexahedron = Null

Exit Function

End If

AllLines(0)=Rhino.AddLine(Point0, PointList(0))

AllLines(1)=Rhino.AddLine(Point0, PointList(1))

AllLines(2)=Rhino.AddLine(Point0, PointList(2))

x=PointList(0)(0)+PointList(1)(0)-Point0(0)

y=PointList(0)(1)+PointList(1)(1)-Point0(1)

z=PointList(0)(2)+PointList(1)(2)-Point0(2)

MidPoint(0)=Array(x,y,z)

AllLines(3)=Rhino.AddLine(MidPoint(0), PointList(0))

AllLines(4)=Rhino.AddLine(MidPoint(0), PointList(1))

x=PointList(1)(0)+PointList(2)(0)-Point0(0)

y=PointList(1)(1)+PointList(2)(1)-Point0(1)

z=PointList(1)(2)+PointList(2)(2)-Point0(2)

MidPoint(1)=Array(x,y,z)

AllLines(5)=Rhino.AddLine(MidPoint(1), PointList(1))

AllLines(6)=Rhino.AddLine(MidPoint(1), PointList(2))

x=PointList(2)(0)+PointList(0)(0)-Point0(0)

y=PointList(2)(1)+PointList(0)(1)-Point0(1)

z=PointList(2)(2)+PointList(0)(2)-Point0(2)

MidPoint(2)=Array(x,y,z)

AllLines(7)=Rhino.AddLine(MidPoint(2), PointList(2))

AllLines(8)=Rhino.AddLine(MidPoint(2), PointList(0))

x=MidPoint(2)(0)+PointList(1)(0)-Point0(0)

y=MidPoint(2)(1)+PointList(1)(1)-Point0(1)

z=MidPoint(2)(2)+PointList(1)(2)-Point0(2)

MidPoint(3)=Array(x,y,z)

AllLines(9)=Rhino.AddLine(MidPoint(0), MidPoint(3))

AllLines(10)=Rhino.AddLine(MidPoint(1), MidPoint(3))

AllLines(11)=Rhino.AddLine(MidPoint(2), MidPoint(3))

If 0 <> flag Then

GroupName = Rhino.AddGroup()

If False = Rhino.IsGroup(GroupName) Then

add_hexahedron = Null

Exit Function

End If

For i = 0 To 11 S tep 1

Rhino.AddObjectToGroup AllLines(i), GroupName Next

add_hexahedron = GroupName

Else

add_hexahedron = Null

End If

End Function

函数使用Point0-PointList(0),Point0-PointList(1),Point0-PointList(2)三条线段来绘制一个六面体。Flag不为0的时候函数将六面体的8条边加入一个组中并返回这个组的名字。

script_plug里面是这个教程最终使用的VBScript代码,TB文件和HTML文件的包,希望对大家有用。将这三个文件放入script_plug的目录下载入使用即可(如“五,工具条脚本程序”一节的目录组织方式)。

注意。代码与前面的例子中的并不完全相同,有一些修改。工具条也给子工具条填加了动作。

OVER

MeteorCode

2009-12-26

最新服务器基础知识(初学者必看)

服务器基础知识【初学者必看】 1. 什么是服务器 就像他的名字一样,服务器在网络上为不同用户提供不同内容的信息、资料和文件。可以说服务器就是Internet网络上的资源仓库,正是因为有着种类繁多数量庞大内容丰富的服务器的存在,才使得Internet如此的绚丽多彩。 2. 服务器的种类和功能 (1) WWW服务器(WWW Server) WWW服务器也称为Web服务器(Web Server)或HTTP服务器(HTTP Server),它是Internet上最常见也是使用最频繁的服务器之一,WWW服务器能够为用户提供网页浏览、论坛访问等等服务。比如:我们在使用浏览器访问https://www.doczj.com/doc/d57126068.html,的时候,实际上就是在访问Discuz!的WWW服务器,从该WWW服务器获取需要的论坛资料和网页。 (2) FTP服务器(FTP Server) FTP服务器是专门为用户提供各种文件(File)的服务器,FTP服务器上往往存储大量的文件,例如:软件、MP3、电影、程序等等。用户只要使用FTP客户端软件登录到FTP服务器上就可以从FTP服务器下载所需文件和资源到自己的电脑上,同时,

你也可以把自己电话上的文件上传到FTP上供其他用户下载,以实现文件资源的共享。 (3) 邮件服务器(Mail Server) e-mail是Internet上应用最频繁的服务之一,而Internet上每天数亿百亿计的电子邮件的收发都是通过邮件服务器实现的。邮件服务器就像邮局一样,可以为用户提供电子邮件的接收存储和发送服务。 除了以上介绍的3种主要服务器之外,还有很多其他类型的网络服务器,例如:数据库服务器(DatabaseServer)、代理服务器(Proxy Server)、域名服务器(Domain Name Server)等等…… 3. 服务器的操作系统 目前服务器中使用的操作系统主要有两类:Windows和Unix。 (1) Windows Windows是美国微软公司(Microsoft)开发的操作系统,在服务器领域,主要有Windows2000Server/Advanced Server/Data Center与Windows2003 Standard Edition/EnterpriseEdition操作系统,Windows的优点是操作简 单,由于Windows使用图形界面进行操作,因而对各种服务器软件功能配置简

(仅供参考)服务器硬件入门基础知识

服务器硬件入门基础知识 开篇一:服务器主板 服务器主板概述 对于服务器而言,稳定性才是首要,服务器必须承担长年累月高负荷的工作要求,而且不能像台式机一样随意的重起,为了提高起可靠性普遍的做法都是部件的冗余技术,而这一切的支持都落在主板的肩上。下面我就来看看有关服务器主板的一些特性: 1、首先,服务器的可扩展性决定着它们的专用板型为较大的ATX,EATX或WATX。 2、中高端服务器主板一般都支持多个处理器,所采用的CPU也是专用的CPU。 3、主板的芯片组也是采用专用的服务器/工作站芯片组,比方Intel E7520、ServerWorks GC-HE等等,不过像入门级的服务器主板,一般都采用高端的台式机芯片组(比如Intel875P芯片组) 4、服务器通常要扩展板卡(比如如网卡,SCSI卡等),因此我们通常都会发现服务器主板上会有较多的PCI、PCI-X、PCI—E插槽。 5、服务器主板同时承载了管理功能。一般都会在服务器主板上集成了各种传感器,用于检测服务器上的各种硬件设备,同时配合相应管理软件,可以远程检测服务器,从而使网络管理员对服务器系统进行及时有效的管理。

6、在内存支持方面。由于服务器要适应长时间,大流量的高速数据处理任务,因此其能支持高达十几GB甚至几十GB的内存容量,而且大多支持ECC内存以提高可靠性(ECC内存是一种具有自动纠错功能的内存,由于其优越的性能使造价也相当高)。 7、存储设备接口方面。中高端服务器主板多采用SCSI接口、SATA接口而非IDE接口,并且支持RAID方式以提高数据处理能力和数据安全性。 8、在显示设备方面。服务器与工作站有很大不同,服务器对显示设备要求不高,一般多采用整合显卡的芯片组,例如在许多服务器芯片组中都整合有ATI的RAGE XL显示芯片,要求稍高点的就采用普通的AGP显卡。而如果是图形工作站,那一般都是选用高端的3DLabs、ATI等显卡公司的专业显卡。 9、在网络接口方面。服务器/工作站主板也与台式机主板不同,服务器主板大多配备双网卡,甚至是双千兆网卡以满足局域网与Internet的不同需求。 10、最后是服务器的价格方面。一般台式机主板顶天也不过1、2千,而服务器主板的价格则从1千多元的入门级产品到几万元甚至十几万元的高档产品都有! 推荐品牌:泰安、超微、Intel 开篇二:服务器CPU 服务器CPU概述 服务器是网络中的重要设备,要接受少至几十人、多至成千上万人的访问,因此对服务器具有大数据量的快速吞吐、超强的稳定性、长时间运行等严格要求。所以说CPU是计算机的“大脑”,是衡量服务器

服务器基础知识(初学者必看)

精心整理服务器基础知识【初学者必看】 1. 什么是服务器? ?? 就像他的名字一样,服务器在网络上为不同用户提供不同内容的信息、资料和文件。可以说服 2. ?? WWW服务器也称为Web服务器(Web Server)或HTTP服务器(HTTP Server),它是Internet上最常见也是使用最频繁的服务器之一,WWW服务器能够为用户提供网页浏览、论坛访问等等服务。比如:我们在使用浏览器访问?

? (2) FTP服务器(FTP Server)? 以从 (3)

?? e-mail是Internet上应用最频繁的服务之一,而Internet上每天数亿百亿计的电子邮件的收发都是通过邮件服务器实现的。邮件服务器就像邮局一样,可以为用户提供电子邮件的接收存储和发送服务。? ?? ……? 3. ? ?? Windows是美国微软公司(Microsoft)开发的操作系统,在服务器领域,主要有Windows2000Server/Advanced?Server/Data Center与Windows2003 Standard Edition/EnterpriseEdition操作系统,Windows的优点是操作简?

单,由于Windows使用图形界面进行操作,因而对各种服务器软件功能配置简便。但它的缺点也不可忽视,例如:Windows操? 作系统成本较高;安全性相对较低;能承受的访问量较低等等。? Linux, Linux 企业(包括电信企业和Google、百度、新浪、搜狐等等)的服务器都运行在Unix/Linux系统之上。?

4. Apache与IIS? ?Apache与IIS都属于WWW服务器,是世界上使用最多的两种WWW服务器。? ?IIS操议 协议 但IIS 的性能和安全性相对较差,并且IIS只能在Windows中使用,无法在UNIX中运行。? (2) Apache?

服务器系统基础知识

服务器系统基础知识 1 什么是服务器? 服务器是计算机的一种,它是在网络操作系统的控制下为网络环境里的客户机提供(如PC) 共享资源(包括查询、存储、计算等)的高性能计算机,它的高性能主要体现在高速度的CPU 运算能力、长时间的可靠运行、强大的I/O 外部数据吞吐能力等方面。服务器主要为客户机提供Web 应用、数据库、文件、打印服务。简单的说,服务器就是在网络中为其他客户机提供服务的计算机. 2 服务器包括哪些子系统? CPU、内存、磁盘、扩展插槽、显示卡和网卡、电源、风扇。 3 服务器按处理器架构分哪几类? 巨型机与大型机(专用处理器)、小型机(IA-64,RISC处理器)、PC服务器(CISC处理器) 4 PC服务器按外形结构分类? A 塔式服务器(通用式服务器):具有较大的机箱尺寸,因此其内部扩展能力较强,可以安装的扩展板卡以及硬盘的数量都比较多 B 机架式服务器(机柜优化服务器):机箱尺寸比较小巧,在机柜中可以同时放置多台服务器,从而获得更高的处理能力。 C 刀片式服务器:超高密度服务器为动态的,空间紧缺的,向外扩展的环境而优化的快速部署。 5 服务器按CPU个数分类:? 4路及4路以上服务器(企业级服务器)、2路服务器(部门级服务器)、1路服务器(入门级服务器) 6 什么是内存? 内存是界于CPU 和外部存储之间,是CPU 对外部存储中程序与数据进行高速运算时存放程序指令、数据和中间结果的临时场所,它的物理实质就是一组具备数据输入输出和数据存储功能的高速集成电路。 7 服务器内存技术有哪些? ?Parity (校验) ?ECC ?ChipKill和高级ECC技术 ?双通道技术 ?内存交错技术 ?Registered内存 在线备用内存技术 内存镜像

相关主题
相关文档 最新文档