Ubuntu 搭建web服务器

1.打开ubuntu14.04

2.开始安装mysql5

sudo apt-get install mysql-server mysql-client

你将被要求提供一个mysql的root用户的密码,我们需要在红色区域设置密码。

new password for the mysql root user: repeat password for the mysql root user:

3.安装apache2

apache2的是作为一个ubuntu的软件包,因此我们可以直接用下面命令安装它:

sudo apt-get install apache2

现在,您的浏览器到http://localhost,你应该看到apache2的测试页:

如果顺利的话会出现:It worke!

4.安装php7.0

我们可以直接安装php7和apache的php7的模块,如下:

sudo apt-get install php7.0 libapache2-mod-php7.0

安装完需要重启

/etc/init.d/apache2 restart

重启时可能遇到的错误:AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1.等等。

解决方法:$ sudo vim /etc/apache2/apache2.conf

*后加入一句: ServerName localhost:80

5.默认网站的文件根目录是在/var/www/html/下中。现在我们将在该目录中创建一个小型php文件(info.php的)在浏览器中调用它。该文件将显示很多关于我们的php安装,如安装的php版本和有用的一些细节。

vi /var/www/html/info.php

在系统文件/var/www/下建立文件info.php,里面编写

<?php

phpinfo()

?>

文件权限问题:sudo chmod 777 /var/www/

6.用浏览器访问例如http://localhost/info.php会看到所有在php5中已经启用的模块,

liunx饥荒独立服务器安装、启动、停止及定时自动更新脚本

liunx饥荒独立服务器安装、启动、停止及定时自动更新脚本
注:

部分基础内容摘自:https://blog.csdn.net/szhiy/article/details/79996017
增加内容:定时更新、安装及启停脚本
脚本下载地址:https://github.com/love390/dontstarveserver
小内存机器无法同时启动地上、地下服务器:增加swap分区https://www.cnblogs.com/chentop/p/10330052.html
一、解决环境依赖
Ubuntu 系统需要的依赖:
sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386 lib32gcc1

CentOS 系统需要的依赖 (仅供参考):
yum -y install glibc.i686 libstdc++.i686 libcurl4-gnutls-dev.i686 libcurl.i686

二,创建专用用户
useradd steam
password steam
su steam

注:相关脚本涉及根路径为/home/steam,不创建特定用户修改对应脚本路径也没问题

二、安装 SteamCMD
此目录用于 steam 程序的安装目录。
mkdir ~/steamcmd

下载 SteamCMD 安装文件
wget -P ~/steamcmd https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

解压压缩包
cd ~/steamcmd
tar -xvzf ~/steamcmd/steamcmd_linux.tar.gz

三、安装饥荒服务端
准备好相关文件(暂时放到/home/steam目录)
cron_update_starve.sh:用于cron定时调度完成服务器更新的脚本
update_starve.cmd:steamcmd运行时实际命令
update_starve.sh:用于下载饥荒服务器至指定目录
start.sh:在后台启动地上地上服务器
start_master.sh:前台启动地上服务器
start_cave.sh:前台启动地下服务器
stop.sh:停止所有服务器
赋予执行权限
– chmod u+x *.sh

启动安装脚本
./update_starve.sh

移动启停脚本
mv start* /home/steam/common/dstserver/bin
mv stop* /home/steam/common/dstserver/bin

四,准备游戏存档及mods
复制相关mods至/home/steam/common/dstserver/mods
复制存档至/home/steam/.Klei\DoNotStarveTogether\Cluster_1
五,解决一个 lib 缺失
cd /home/steam/common/dstserver/bin/lib32
ln -s /usr/lib/libcurl.so.4 libcurl-gnutls.so.4

六,设置定时调度
centos
systemctl enable crond
systemctl start crond

使用crontab -e后写入:0 3 * * * /home/steam/cron_update_starve.sh,保存

crontab -e

七、预期文件目录结构(仅保留核心内容)
│/steam
├──common
│ └── dstserver
│ ├── bin
│ │ ├── start_cave.sh
│ │ ├── start_master.sh
│ │ ├── start.sh
│ │ ├── steam_appid.txt
│ │ └── stop.sh
├── steamcmd
│ └── steamcmd.sh
├── update_starve.cmd
└── update_starve.sh
├── cron_update_starve.sh

八、启动及验证
启动
/home/steam/common/dstserver/bin/start.sh

验证
ps aux | grep donts

安装配置饥荒专用服务器

安装篇
Windows下安装
下载

https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip

解压到一个单独目录并运行steamcmd.exe

首次运行会自动下载相应文件

在steam命令行运行以下指令

# 匿名登录
login anonymous
# 设置存储游戏的目录
# 如果不设置默认在<steamcmd.exe所在目录\steamapps\common\Don’t Starve Together Dedicated Server>
force_install_dir D:\Game\DST
# 下载游戏。不知道把游戏下载好放入上面目录行不行,未测试。
app_update 343050 validate
# 退出steamcmd
quit

启动服务器

进入D:\Game\DST\bin,创建批处理文件dst_overworld.bat:

dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root D:/Game -cluster DediServer

-console参数允许在服务器命令行输入命令

执行批处理文件启动服务器

输入c_shutdown()关闭服务器

Ubuntu下安装
安装运行环境
Ubuntu/Debian 64位

sudo apt-get -y install lib32gcc1

RedHat/CentOS 32位

sudo yum -y install glibc libstdc++

RedHat/CentOS 64位

sudo yum -y install glibc.i686 libstdc++.i686

安装服务器
mkdir ~/steamcmd && cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xf steamcmd_linux.tar.gz
./steamcmd.sh +login anonymous +force_install_dir /root/dst +app_update 343050 validate +quit

cd ~/dst/bin
apt-get update && apt-get -y install lib32stdc++6 libstdc++6 libcurl4-gnutls-dev:i386

echo ./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root ~/game -cluster DediServer > dst_overworld.sh
# 若想开启洞穴可以再多开一个服务器,注意-cluster名称不能相同

sh dst_overworld.sh
# 如果顺利,则会在~/game下形成目录结构,可以执行c_shutdown()关闭服务器。然后进行服务器配置后再启动。

配置篇
实际上,经过安装篇的步骤启动服务器后并不会成功启动,因为还需要配置Klei服务器令牌(获取令牌步骤本文不做说明)。

经过安装篇的操作后,会在-persistent_storage_root参数指定的目录下建立专用服务器目录结构,配置服务器都是在这个目录里进行的。

目录结构
. # 目录位置由启动指令的 -persistent_storage_root 参数指定
└── DoNotStarveTogether # 目录位置由启动指令的 -conf_dir 参数指定,此为默认
└── DediServer # 目录位置由启动指令的 -cluster 参数指定
├── adminlist.txt
├── blocklist.txt
├── cluster.ini
├── cluster_token.txt
├── Master # 目录位置由启动指令的 -shard 参数指定,此为默认
│ ├── modoverrides.lua
│ ├── server.ini
│ └── worldgenoverride.lua
└── whitelist.txt

DoNotStarveTogether目录保存了专用服务器的所有配置和存档信息。

配置文件说明
cluster_token.txt:Klei服务器令牌(token),这个文件必须有,否者服务器无法成功启动。

adminlist.txt :管理员用户列表
blocklist.txt :黑名单用户列表
whitelist.txt :白名单用户列表
以上三个文件,里面的内容都为KU_开头的用户ID,一行一个。

cluster.ini:配置服务器基本信息。内容参考:

[GAMEPLAY]
game_mode = endless
max_players = 2
pvp = false
pause_when_empty = true

[NETWORK]
lan_only_cluster = false
cluster_intention = cooperative
cluster_password = password
cluster_description = desc
cluster_name = xxx_server
offline_cluster = false
cluster_language = zh
tick_rate = 15

[MISC]
console_enabled = true

[SHARD]
shard_enabled = false
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10888
cluster_key = defaultPass

modoverrides.lua:配置启用的mod,修改后重启服务器生效。
要启用的mod需下载到本地,下面有详细说明。
内容参考:

return {
[“workshop-1430042811”] = { enabled = true },
[“workshop-1535331014”] = { enabled = true },
[“workshop-375850593”] = { enabled = true },
[“workshop-378160973”] = { enabled = true },
[“workshop-362175979”] = { enabled = true },
[“workshop-786556008”] = { enabled = true },
[“workshop-666155465”] = { enabled = true },
[“workshop-462372013”] = { enabled = true },
[“workshop-543945797”] = { enabled = true },
[“workshop-831523966”] = { enabled = true },
[“workshop-347079953”] = { enabled = true },
[“workshop-770901818”] = { enabled = true },
[“workshop-398858801”] = { enabled = true }
}

worldgenoverride.lua:配置生成的世界属性。
这个文件只在生成世界时起作用,也就是说一旦世界已经生成,再修改,世界也不会变化。
内容参考:

return {
override_enabled = true,
unprepared = { — “never”, “rare”, “default”, “often”, “always”
berrybush = “often”, –浆果
cactus = “often”, –仙人掌
carrot = “default”, –胡萝卜
mushroom = “often”, –蘑菇
},
misc = {
task_set = “default”, — Biomes: “classic”, “cave_default” –生物群落
start_location = “default”, — Start: “plus”, “darkness”, “caves”
autumn = “verylongseason”, — “noseason”, “veryshortseason”, “shortseason”, “default”, “longseason”, “verylongseason”, “random”
boons = “default”, — “never”, “rare”, “default”, “often”, “always” 先辈
branching = “default”, — “never”, “least”, “default”, “most” 分支
day = “longday”, — “default”, “longday”, “longdusk”, “longnight”, “noday”, “nodusk”, “nonight”, “onlyday”, “onlydusk”, “onlynight”
frograin = “rare”, — “never”, “rare”, “default”, “often”, “always” 青蛙雨
lightning = “default”, — “never”, “rare”, “default”, “often”, “always” 闪电
loop = “default”, — “never”, “default”, “always” 循环
season_start = “default”, — “default”, “winter”, “spring”, “summer”, “random”
spring = “longseason”, — “noseason”, “veryshortseason”, “shortseason”, “default”, “longseason”, “verylongseason”, “random”
summer = “veryshortseason”, — “noseason”, “veryshortseason”, “shortseason”, “default”, “longseason”, “verylongseason”, “random”
touchstone = “default”, — “never”, “rare”, “default”, “often”, “always” 复活石
weather = “default”, — “never”, “rare”, “default”, “often”, “always” 雨
wildfires = “rare”, — “never”, “rare”, “default”, “often”, “always” 野火
winter = “veryshortseason”, — “noseason”, “veryshortseason”, “shortseason”, “default”, “longseason”, “verylongseason”, “random”
world_size = “huge”, — “default”, “medium”, “large”, “huge”
},
animals = { — “never”, “rare”, “default”, “often”, “always”
alternatehunt = “default”, –追猎惊喜
angrybees = “default”, –杀人蜂
beefalo = “often”, –牛
beefaloheat = “default”, –牛发情
bees = “default”,
birds = “default”,
butterfly = “often”,
buzzard = “default”, –秃鹫
catcoon = “default”,
frogs = “default”,
hunt = “default”, –狩猎
lightninggoat = “default”, –羊
moles = “default”, –鼹鼠
penguins = “default”, –企鹅
perd = “default”, –火鸡?
pigs = “often”,
rabbits = “often”,
tallbirds = “default”, –高脚鸟
},
monsters = { — “never”, “rare”, “default”, “often”, “always”
bearger = “default”, –熊大
chess = “default”, –发条
deciduousmonster = “default”, –毒山毛榉树?树精?
deerclops = “default”, –巨鹿
dragonfly = “rare”, –龙蝇
goosemoose = “default”, –鹿鸭
houndmound = “default”, –猎犬丘
hounds = “rare”, –狗
krampus = “default”, –小偷 坎普斯
liefs = “default”, –毒山毛榉树?树精?
lureplants = “rare”, –食人花
merm = “default”, –鱼人或蚁狮贡品
spiders = “default”, –蜘蛛
tentacles = “default”, –触手
walrus = “default”, –海象
},
resources = { — “never”, “rare”, “default”, “often”, “always”
flint = “often”, –燧石
flowers = “often”,
grass = “default”,
marshbush = “default”, –芦苇
meteorshowers = “default”, –流星
meteorspawner = “default”, –流星区域
reeds = “default”, –尖灌木
rock = “often”,
rock_ice = “default”,
sapling = “default”, –树枝
trees = “default”,
tumbleweed = “often”, –风滚草
},
}

下载mod
服务器可以配置启用哪些mod,但是启用的前提是mod需要下载到本地。下面介绍下载mod的方法。

在安装篇里,用steamcmd下载游戏前,使用force_install_dir命令指定了游戏安装目录(D:\Game\DST)。在此目录下有个mods文件夹,可以把下载好的mod放到里面去。

另外,也可以通过修改里面的dedicated_server_mods_setup.lua文件,在服务器启动的时候再下载相应mod。

dedicated_server_mods_setup.lua内容参考:

ServerModSetup(“1430042811”)
ServerModSetup(“1535331014”)
ServerModSetup(“375850593”)
ServerModSetup(“378160973”)
ServerModSetup(“362175979”)
ServerModSetup(“786556008”)
ServerModSetup(“666155465”)
ServerModSetup(“462372013”)
ServerModSetup(“543945797”)
ServerModSetup(“831523966”)
ServerModSetup(“347079953”)
ServerModSetup(“770901818”)
ServerModSetup(“398858801”)

后记
如果出现服务器开启成功,而客户端找不到的情况,尝试更新服务器端程序即可:

login anonymous
app_update 343050 validate

饥荒联机版服务器搭建_Linux 搭建饥荒联机版服务器

工具

步骤

安装运行环境

yum install -y mailx postfix curl wget bzip2 gzip unzip python tmux glibc.i686 libstdc++ libstdc++.i686 libcurl.i686

Note: 如何配置阿里Yum源加速,请参考CentOS配置阿里Yum源。

配置专用用户并登录

adduser dstserver

su – dstserver

下载并执行脚本

wget -N –no-check-certificate https://gameservermanagers.com/dl/linuxgsm.sh && \

chmod +x linuxgsm.sh && \

bash linuxgsm.sh dstserver

下载饥荒服务器安装脚本 (坐等安装,需要好久0.0)

./dstserver install

安装完成后,绑定Cluster Token

运行服务器

./dstserver start

加入世界, 欢迎来到我的的饥荒世界

服务器Mods

安装mod,需修改/home/dstserver/serverfiles/mods/dedicated_server_mods_setup.lua

# /home/dstserver/serverfiles/mods/dedicated_server_mods_setup.lua

ServerModSetup(“MOD_ID”)

启用mod,需修改/home/dstserver/serverfiles/mods/modsettings.lua

# /home/dstserver/serverfiles/mods/modsettings.lua

ForceEnableMod(“workshop-MOD_ID”)

备注

服务器常用命令

./dstserver 查看命令列表

./dstserver start 启动服务器

./dstserver stop 停止服务器

./dstserver restart 重启服务器

./dstserver details 查看服务器信息

./dstserver console 控制台模式

./dstserver update 更新服务器

./dstserver validate 校验服务器

./dstserver backup 备份服务器

服务器文件解析

文件夹:

/home/dstserver/.klei/DoNotStarveTogether/Cluster_1/ –服务器根目录

/home/dstserver/.klei/DoNotStarveTogether/Cluster_1/Master –地表存档根目录

/home/dstserver/.klei/DoNotStarveTogether/Cluster_1/Caves –洞穴存档根目录

文件:

/home/dstserver/.klei/DoNotStarveTogether/Cluster_1/cluster.ini –服务器设置文件

/home/dstserver/.klei/DoNotStarveTogether/Cluster_1/cluster_token.txt –令牌文件

/home/dstserver/.klei/DoNotStarveTogether/Cluster_1/Master /server.ini –地表存档设置文件

/home/dstserver/.klei/DoNotStarveTogether/Cluster_1/Master /modoverrides.lua –mod配置文件

/home/dstserver/.klei/DoNotStarveTogether/Cluster_1/Master/worldgenoverride.lua(可选) –地图配置文件

/home/dstserver/.klei/DoNotStarveTogether/Cluster_1/Caves/server.ini –洞穴存档设置文件

文档/home/dstserver/.klei/DoNotStarveTogether/Cluster_1/Caves/modoverrides.lua –mod配置文件

文档/home/dstserver/.klei/DoNotStarveTogether/Cluster_1/Caves/worldgenoverride.lua –地图配置文件

cluster.ini 解析

[GAMEPLAY]

game_mode = endless # 游戏模式

max_players = 8 # *大玩家人数

pvp = false # pvp开关

pause_when_empty = true # 没人在线时暂停世界

vote_enabled = true # 投票开关(投票T人,投票重置世界)

[NETWORK]

lan_only_cluster = false # 只允许本地局域网加入开关

offline_cluster = false # 离线游戏

cluster_description = ‘0.0’ # 服务器简介

cluster_name = ‘My World’ # 服务器名称

cluster_intention = cooperative # 服务类型

cluster_password = 123456 # 服务器密码

tick_rate = 30 # 帧刷新频率

connection_timeout = 120000 # 掉线等待时间,单位毫秒

whitelist_slots = 1 # 白名单个数

autosaver_enabled = true # 天亮自动保存

【MISC]

console_enable = true # 是否开启控制台

max_snapshots = 6 # *大快照

[SHARD]

shard_enabled = true # 是否多世界

bind_ip = 127.0.0.1 # 主从世界在同一台服务器上(默认)

master_ip = 127.0.0.1 # 主从世界在同一台服务器上(默认)

master_port = 10888 # 端口

cluster_key = rain # 主从世界连接密码

[STEAM]

steam_group_only = false # 是否只允许同steam组的人加入

steam_group_id = 2222222 # steam组ID

steam_group_admins = true # steam组员自动成为管理员

2021*新 基于linux搭建饥荒云服务器开启造人之旅

在放假前的期末由于无聊,就尝试着在云服务器上搭建饥荒联机版的云服务器,起初是以wegame饥荒搭建服务器,*后还是妥协搭建了steam的服务器。但是由于本人头铁,一心只想用centos7搭建,结果搭了一天依赖一堆都没有装完,在这里不推荐用centos7搭建云服务器,以下均以Ubuntu系统搭建服务器。

安装配置文件等
Xshell6
一台基于Ubuntu的云服务器

1、本地服务器准备

%title插图%num

主界面

通过主界面进入账号申请管理员权限

 

%title插图%num

申请管理员权限

再回到主界面点击创建本地服务器

%title插图%num

创建服务器

选择你的服务器的配置等
生成好的本地存档位于 C:\Users\asus\Documents\Klei\DoNotStarveTogether

%title插图%num

存档查看

其中Cluster_X对应的X代表你本地生成第几个存档。同时创建一个cluster_token.txt文件存放获取获取的管理员权限

2、云服务器搭建准备
装linux下的运行依赖文件
sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386 lib32gcc1
注:这个依赖一定要装,当初用centos7搭建云服务器就是差了太多的依赖文件失败的

安装steamcmd
mkdir ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
在进入 steam>的时候,即需要登录,运行以下命令完成游客登录的操作

 

login anonymous
force_install_dir ../dontstarvetogether_dedicated_server
app_update 343050 validate
quit
解决 lib 缺失(如果有lib依赖缺失的问题请一定要运行这一步,添加软关系,其实云端是有这个依赖的)
mkdir -p ~/dontstarvetogether_dedicated_server/bin/lib32
ln -s /usr/lib/libcurl.so.4 libcurl-gnutls.so.4
上传配置文件
(在这里我没有用sftp来上传我的配置文件,而是直接通过安装本地上传服务器的包进行上传的)
mkdir -p ~/.klei/DoNotStarveTogether
sudo apt-get install lrzsz -y
rz
进入你配置文件所在的地址

%title插图%num

访问本地配置文件

  1. 制作启动脚本
    通过cd ~的指令操作返回顶层,同时通过vi startDST.sh创建脚本,并添加以下内容

#!/bin/bash

steamcmd_dir=”$HOME/steamcmd”
install_dir=”$HOME/dontstarvetogether_dedicated_server”
cluster_name=”Cluster_1″
dontstarve_dir=”$HOME/.klei/DoNotStarveTogether”

check_for_file “$install_dir/bin”

cd “$install_dir/bin” || fail

run_shared=(./dontstarve_dedicated_server_nullrenderer)
run_shared+=(-console)
run_shared+=(-cluster “$cluster_name”)
run_shared+=(-monitor_parent_process $$)

“${run_shared[@]}” -shard Caves | sed ‘s/^/Caves: /’ &
“${run_shared[@]}” -shard Master | sed ‘s/^/Master: /’//
赋予启动权限

 

chmod +x ./startDST.sh
利用screen命令新建一个窗口并后台运行
screen -S DST
./startDST.sh //启动脚本程序
可通过ctrl+A+D指令进入后台,通过screen -r DST返回后台

%title插图%num

运行成功

 

3、本地访问ip

进入游戏主界面按下~键进入后台输入注意是在英文下输入,并获得以下界面

%title插图%num

控制台

输入 c_connect("ip") ip是指的你的服务器公网ip,这样就进入了ip云服务器,开启你的造(人)世界之旅吧~

%title插图%num

造人模式启动

饥荒联机版-Centos7-阿里云服务器-搭建

本文使用centos 7.7版本作为案例

一、服务器相关依赖的安装与配置
这里先简单说一下Linux不同发行版本的区别:常用的个人linux系统一般使用ubuntu,为debian系列的linux发行版本;deepin这种为国产系统(不予讨论);本文使用的centos为red-hat系列的linux发行版本。在搭建服务器的过程中,主要的区别就在于安装各种依赖和包的方式不同,ubuntu 一般是apt-get install; sudo apt-get install等等。 centos 一般为yum install; yum remove 等等。并且各种包的依赖管理不一致,有些包在ubuntu上可以直接install,但是使用Yum就找不到,这个时候就需要手动进行安装。但是一般可以根据官方文档的提示进行安装。废话太多,进入主要环节。

1、阿里云服务器的购买、选型、安装

这一步骤自行百度,一般阿里云服务器购买有两种,ECS服务器(弹性计算)和轻量应用服务器,两者区别不大,前者带宽只有1M,后者带宽有5M,建议选后者(我用的是ECS,感觉还行,也不是很卡,偶尔有点网络波动)。PS:25岁以下自动视为学生,享受学生优惠,10元/月,就很划算。

搭建好之后,下载安装Xshell破解版,愿意折腾的可以连带着下一个ftp用于服务器与本机的文件传输。

2、相关依赖安装

这里默认你已经购买并启动了阿里云服务器,使用xshell连接你的服务器,然后使用账号密码进行登录。

首先进行相关依赖的安装:

useradd -m dst
cd /home/dst
yum -y install glibc.i686 libstdc++.i686 screen libcurl.i686 lrzsz

3、steam命令以及饥荒服务器的安装

参考steamCMD,新建专门用于服务器的用户,并在该用户目录下面进行相关文件的配置。

mkdir ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
./steamcmd.sh +login anonymous +force_install_dir ~/dst +app_update 343050 validate +quit
这一步里面,在wget的时候可能会出错,因为阿里云无法访问steam的网址,这里需要在本机自己下载网址中的文件,然后使用rz命令将文件上传到服务器

cd ~/steamcmd
rz
# rz之后会打开一个窗口,选择你下载好的文件进行上传,这一步用于代替上个代码中的wget那一行
然后检查是否缺乏相关依赖

cd ~/dst/bin
ldd dontstarve_dedicated_server_nullrenderer
./dontstarve_dedicated_server_nullrenderer
如果有错误,可以参考ttionya的博客

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15′ not found
#一般是因为安装的C运行库版本过低导致的,比如说CentOS从YUM源中安装的仅支持GLIBCXX到3.4.13
#所幸SteamCMD中也需要该动态链接库,并且自带了该动态链接库,只需要拷贝至DST文件夹中即可
cp ~/steamcmd/linux32/libstdc++.so.6 ~/dst/bin/lib32/

/lib/libc.so.6: version `GLIBC_2.15′ not found
#一般是因为安装的glibc版本过低导致的,比如说CentOS从YUM源中安装的仅有2.12版本
#从Klei官方提供的链接下载与glibc相关的3个文件,Debian系也是这样解决
cd ~/dst/bin/lib32/
wget https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/libc.so.6
wget https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/libpthread.so.0
wget https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/librt.so.1

error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory
#这是因为系统没有搜索到该文件
#使用cp方法运行时会出现./lib32/libcurl-gnutls.so.4: no version information available警告,无视之~
sudo apt-get install libcurl4-gnutls-dev:i386 #Debian系
cp /usr/lib/libcurl.so.4 ~/dst/bin/lib32/libcurl-gnutls.so.4 #RedHat系,Debian系未测试该方法是否可行

#博主只遇到了这几个错误,其他错误就不是很清楚了= =
4、创建用于配置服务器的脚本文件

cd ~/dst/bin/
echo ./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Master > dst_overworld.sh
echo ./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Caves > dst_caves.sh
sh dst_overworld.sh
#待出现Your Server Will Not Start后,按Ctrl+C终止进程(没有什么是靠Ctrl+C不能解决的,如果一下不行,那就两下)
sh dst_caves.sh
#待出现Your Server Will Not Start后,按Ctrl+C终止进程(没有什么是靠Ctrl+C不能解决的,如果一下不行,那就两下)

rm -rf ~/.klei/DoNotStarveTogether/Cluster_*
#删除之前创建的默认文件
在 ~/.klei/DoNotStarveTogether/ 中就生成了一个 DediServer 文件夹,该文件夹下有名为 Master 和 Caves 的两个子文件夹,这两个文件夹分别是地上和洞穴的配置目录。

当饥荒升级之后,需要重新运行下列代码进行升级:

~/steamcmd/steamcmd.sh +login anonymous +force_install_dir ~/dst +app_update 343050 validate +quit
#注意这就是之前安装的命令,如果有修改路径的话,记得用实际路径哟
二、服务器的配置
先说下服务器配置的相关文件和路径,主要用到的是这几个目录.建议在本机新建一个tmp文件夹,创建相同的路径,然后将配置文件在对应路径下创建好,*后上传到服务器。

/home/dst/.klei/DoNotStarveTogether\MyDediServer
|—Master
|—Caves
/home/dst/dst/mods
Master为地上的配置,Caves为地下的配置,mods为你的mod安装位置,这里建议mod的安装方式参考哔哩哔哩。即现在本机上下载好服务器mod,通常是work-*,work-*.然后将这些文件夹通过ftp上传到服务器,或者是使用rz的方式,这里简单说以下使用rz的方式.

#本机端
找到你的mods文件夹下的所有用于服务器的mod,因为mod只有编号,
如果你不清除你哪个编号对应哪个,进去mod文件下,用写字本或者其它
文本编辑软件打开modinfo.lua,然后你就可以看到它是什么mod了。
选中你需要上传的mod文件夹,
1、使用ftp上传,直接拖就行。
2、rz方式。
这里说第二种,首先选中所有mod文件夹,压缩成mods.rar文件,
#linux端
cd ~/dst/mods
rz
# 选中rar文件
unrar x mods.rar
# 就可以了

1、配置token文件

打开游戏客户端,在游戏主界面,在右下角找到 Account 图标,点开

%title插图%num

点击 Account 按钮

在打开的页面下部,找到 Generate Server Token 按钮,在右侧的输入框内输入相应描述,比如输入 DST Dedi Server Token,然后点击 Generate Server Token 按钮,即生成了一个不会失效的 token。可以在按钮上方找到相应描述的 token,复制备用。

%title插图%num

之后,将复制的 token 粘贴到 cluster_token.txt 文件中。

2、配置世界地图(必须)

地上部分,将文件保存为 worldgenoverride.lua,并放进 Master 文件夹中:

return {
override_enabled = true,
preset = “SURVIVAL_TOGETHER”, — “SURVIVAL_TOGETHER”, “MOD_MISSING”, “SURVIVAL_TOGETHER_CLASSIC”, “SURVIVAL_DEFAULT_PLUS”, “COMPLETE_DARKNESS”, “DST_CAVE”, “DST_CAVE_PLUS”
overrides = {
— default is “never”, “rare”, “default”, “often”, “always”

— MISC
task_set = “default”, — “classic”, “default”, “cave_default”
start_location = “default”, — “caves”, “default”, “plus”, “darkness”
world_size = “default”, — “small”, “medium”, “default”, “huge”
branching = “default”, — “never”, “least”, “default”, “most”
loop = “default”, — “never”, “default”, “always”
autumn = “default”, — “noseason”, “veryshortseason”, “shortseason”, “default”, “longseason”, “verylongseason”, “random”
winter = “default”, — “noseason”, “veryshortseason”, “shortseason”, “default”, “longseason”, “verylongseason”, “random”
spring = “default”, — “noseason”, “veryshortseason”, “shortseason”, “default”, “longseason”, “verylongseason”, “random”
summer = “default”, — “noseason”, “veryshortseason”, “shortseason”, “default”, “longseason”, “verylongseason”, “random”
season_start = “default”, — “default”, “winter”, “spring”, “summer”, “autumnorspring”, “winterorsummer”, “random”
day = “default”, — “default”, “longday”, “longdusk”, “longnight”, “noday”, “nodusk”, “nonight”, “onlyday”, “onlydusk”, “onlynight”
weather = “default”,
earthquakes = “default”,
lightning = “default”,
frograin = “default”,
wildfires = “default”,
touchstone = “default”,
regrowth = “default”, — “veryslow”, “slow”, “default”, “fast”, “veryfast”
cavelight = “default”, — “veryslow”, “slow”, “default”, “fast”, “veryfast”
boons = “default”,
prefabswaps_start = “default”, — “classic”, “default”, “highly random”
prefabswaps = “default”, — “none”, “few”, “default”, “many”, “max”

— RESOURCES
flowers = “default”,
grass = “default”,
sapling = “default”,
marshbush = “default”,
tumbleweed = “default”,
reeds = “default”,
trees = “default”,
flint = “default”,
rock = “default”,
rock_ice = “default”,
meteorspawner = “default”,
meteorshowers = “default”,
mushtree = “default”,
fern = “default”,
flower_cave = “default”,
wormlights = “default”,

— UNPREPARED
berrybush = “default”,
carrot = “default”,
mushroom = “default”,
cactus = “default”,
banana = “default”,
lichen = “default”,

— ANIMALS
rabbits = “default”,
moles = “default”,
butterfly = “default”,
birds = “default”,
buzzard = “default”,
catcoon = “default”,
perd = “default”,
pigs = “default”,
lightninggoat = “default”,
beefalo = “default”,
beefaloheat = “default”,
hunt = “default”,
alternatehunt = “default”,
penguins = “default”,
cave_ponds = “default”,
ponds = “default”,
bees = “default”,
angrybees = “default”,
tallbirds = “default”,
slurper = “default”,
bunnymen = “default”,
slurtles = “default”,
rocky = “default”,
monkey = “default”,

— MONSTERS
spiders = “default”,
cave_spiders = “default”,
hounds = “default”,
houndmound = “default”,
merm = “default”,
tentacles = “default”,
chess = “default”,
lureplants = “default”,
walrus = “default”,
liefs = “default”,
deciduousmonster = “default”,
krampus = “default”,
bearger = “default”,
deerclops = “default”,
goosemoose = “default”,
dragonfly = “default”,
bats = “default”,
fissure = “default”,
worms = “default”,
},
}
洞穴部分,将文件保存为 worldgenoverride.lua,并放进 Caves 文件夹中:

return {
override_enabled = true,
preset = “DST_CAVE”, — “SURVIVAL_TOGETHER”, “MOD_MISSING”, “SURVIVAL_TOGETHER_CLASSIC”, “SURVIVAL_DEFAULT_PLUS”, “COMPLETE_DARKNESS”, “DST_CAVE”, “DST_CAVE_PLUS”
overrides = {
— defalut is “never”, “rare”, “default”, “often”, “always”

— MISC
task_set = “cave_default”, — “classic”, “default”, “cave_default”
start_location = “default”, — “caves”, “default”, “plus”, “darkness”
world_size = “default”, — “small”, “medium”, “default”, “huge”
branching = “default”, — “never”, “least”, “default”, “most”
loop = “default”, — “never”, “default”, “always”
autumn = “default”, — “noseason”, “veryshortseason”, “shortseason”, “default”, “longseason”, “verylongseason”, “random”
winter = “default”, — “noseason”, “veryshortseason”, “shortseason”, “default”, “longseason”, “verylongseason”, “random”
spring = “default”, — “noseason”, “veryshortseason”, “shortseason”, “default”, “longseason”, “verylongseason”, “random”
summer = “default”, — “noseason”, “veryshortseason”, “shortseason”, “default”, “longseason”, “verylongseason”, “random”
season_start = “default”, — “default”, “winter”, “spring”, “summer”, “autumnorspring”, “winterorsummer”, “random”
day = “default”, — “default”, “longday”, “longdusk”, “longnight”, “noday”, “nodusk”, “nonight”, “onlyday”, “onlydusk”, “onlynight”
weather = “default”,
earthquakes = “default”,
lightning = “default”,
frograin = “default”,
wildfires = “default”,
touchstone = “default”,
regrowth = “default”, — “veryslow”, “slow”, “default”, “fast”, “veryfast”
cavelight = “default”, — “veryslow”, “slow”, “default”, “fast”, “veryfast”
boons = “default”,
prefabswaps_start = “default”, — “classic”, “default”, “highly random”
prefabswaps = “default”, — “none”, “few”, “default”, “many”, “max”

— RESOURCES
flowers = “default”,
grass = “default”,
sapling = “default”,
marshbush = “default”,
tumbleweed = “default”,
reeds = “default”,
trees = “default”,
flint = “default”,
rock = “default”,
rock_ice = “default”,
meteorspawner = “default”,
meteorshowers = “default”,
mushtree = “default”,
fern = “default”,
flower_cave = “default”,
wormlights = “default”,

— UNPREPARED
berrybush = “default”,
carrot = “default”,
mushroom = “default”,
cactus = “default”,
banana = “default”,
lichen = “default”,

— ANIMALS
rabbits = “default”,
moles = “default”,
butterfly = “default”,
birds = “default”,
buzzard = “default”,
catcoon = “default”,
perd = “default”,
pigs = “default”,
lightninggoat = “default”,
beefalo = “default”,
beefaloheat = “default”,
hunt = “default”,
alternatehunt = “default”,
penguins = “default”,
cave_ponds = “default”,
ponds = “default”,
bees = “default”,
angrybees = “default”,
tallbirds = “default”,
slurper = “default”,
bunnymen = “default”,
slurtles = “default”,
rocky = “default”,
monkey = “default”,

— MONSTERS
spiders = “default”,
cave_spiders = “default”,
hounds = “default”,
houndmound = “default”,
merm = “default”,
tentacles = “default”,
chess = “default”,
lureplants = “default”,
walrus = “default”,
liefs = “default”,
deciduousmonster = “default”,
krampus = “default”,
bearger = “default”,
deerclops = “default”,
goosemoose = “default”,
dragonfly = “default”,
bats = “default”,
fissure = “default”,
worms = “default”,
},
}
3、配置通用配置文件(必须)

文件名为cluster.ini,下面为相关解释。

[MISC]
max_snapshots = 6 # *大快照数,决定了可回滚的天数
console_enabled = true # 是否开启控制台

[SHARD]
shard_enabled = true # 服务器共享,要开启洞穴服务器的必须启用
bind_ip = 127.0.0.1 # 服务器监听的地址,当所有实例都运行在同一台机器时,可填写 127.0.0.1,会被 server .ini 覆盖
master_ip = 127.0.0.1 # master 服务器的 IP,针对非 master 服务器,若与 master 服务器运行在同一台机器时,可填写 127.0.0.1,会被 server.ini 覆盖
master_port = 10888 # 监听 master 服务器的 UDP 端口,所有连接至 master 服务器的非 master 服务器必须相同
cluster_key = dst # 连接密码,每台服务器必须相同,会被 server.ini 覆盖

[STEAM]
steam_group_only = false # 只允许某 Steam 组的成员加入
steam_group_id = 0 # 指定某个 Steam 组,填写组 ID
steam_group_admins = false # 开启后,Steam 组的管理员拥有服务器的管理权限

[NETWORK]
offline_server = false # 离线服务器,只有局域网用户能加入,并且所有依赖于 Steam 的任何功能都无效,比如说饰品掉落
tick_rate = 15 # 每秒通信次数,越高游戏体验越好,但是会加大服务器负担
whitelist_slots = 0 # 为白名单用户保留的游戏位
cluster_password = # 游戏密码,不设置表示无密码
cluster_name = ttionya test # 游戏房间名称
cluster_description = description # 游戏房间描述
lan_only_cluster = false # 局域网游戏
cluster_intention = madness # 游戏偏好,可选 cooperative, competitive, social, or madness,随便设置,没卵用

[GAMEPLAY]
max_players = 16 # *大游戏人数
pvp = true # 能不能攻击其他玩家,能不能给其他玩家喂屎
game_mode = survival # 游戏模式,可选 survival, endless or wilderness,与玩家死亡后的负面影响有关
pause_when_empty = false # 没人服务器暂停,刷天数必备
vote_kick_enabled = false # 投票踢人
直接复制下面的内容:

[MISC]
max_snapshots =6
console_enabled = true

[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 11001
cluster_key = dst

[STEAM]
steam_group_only = false
steam_group_id = 0
steam_group_admins = false

[NETWORK]
offline_server = false
tick_rate = 15
whitelist_slots = 2
cluster_name = ttionya test
cluster_description = just test
lan_only_cluster = false
cluster_intention = cooperative

[GAMEPLAY]
max_players = 16
pvp = true
game_mode = endless
pause_when_empty = true
vote_kick_enabled = true
4、配置独立配置文件(必须)

相关解释

[SHARD]
is_master = true /false # 是否是 master 服务器,只能存在一个 true,其他全是 false
name = caves # 针对非 master 服务器的名称
id = ??? # 随机生成,不用加入该属性

[STEAM]
authentication_port = 8766 # Steam 用的端口,确保每个实例都不相同
master_server_port = 27016 # Steam 用的端口,确保每个实例都不相同

[NETWORK]
server_port = 10999 # 监听的 UDP 端口,只能介于 10998 – 11018 之间,确保每个实例都不相同
地上部分,保存为 server.ini,并放到 Master 文件夹内:

[SHARD]
is_master = true

[STEAM]
authentication_port = 12345
master_server_port = 12346

[NETWORK]
server_port = 10999
洞穴部分,保存为 server.ini,放到 Caves 文件夹内:

[SHARD]
is_master = false
name = caves

[STEAM]
authentication_port = 12347
master_server_port = 12348

[NETWORK]
server_port = 11000
5、mod配置

参考本章开头,将mod文件上传到指定目录。并在Master和Caves下面分别配置使用的mod。这个文件保存为 modoverrides.lua,并且分别往 Master 和 Caves 文件夹里复制一份。

return {
[“workshop-458940297”] = { enabled = true },
[“workshop-375859599”] = { enabled = true },
[“workshop-375850593”] = { enabled = true },
[“workshop-343762271”] = { enabled = true },
[“workshop-556027744”] = { enabled = true },
[“workshop-444438334”] = { enabled = true,
configuration_options =
{
keybind = 103,
maxLights = 2,
backpackCategory = “food”
}
},
[“workshop-378160973”] = { enabled = true },
[“workshop-347079953”] = { enabled = true }
}
上面双引号中的编号替换为你自己的mod编号,严格注意格式,不能有任何差异。

6、管理员设置(可选) 6、7、8直接参考ttionya的8、9、10

有两种方法:

1、让该玩家加入游戏,再查看日志,你会在日志中找到 KU_ 开头的一串用户 id

2、让该玩家点击游戏主页面的 Account 按钮(和获得 token 一样),在页面中会有用户 id

之后,把用户 id 一行放一个,保存在 adminlist.txt 文件中。下面是栗子:

KU_3N5kE2Zp
KU_BJY3CxYT
KU_DF1orNGA
KU_FAd2Yr8m
KU_vvbUjgIX
7、Ban 用户(可选)

从日志中找到他的 SteamID64,添加到 blocklist.txt 中,一行一个。

8、白名单席位(可选)

与 blocklist.txt 对应,这个文件是 whitelist.txt,但是里面的内容是以 KU_ 开头的用户 id。

9、将文件移动到相关位置(重要)

/home/dst/.klei/DoNotStarveTogether\MyDediServer
|
| adminlist.txt(/adminlist.txt)
| blocklist.txt(/blocklist.txt)
| cluster.ini(/cluster.ini)
| cluster_token.txt(/cluster_token.txt)
| whitelist.txt(/whitelist.txt)
|
|—Master
| | modoverrides.lua(/Master/modoverrides.lua)
| | server.ini(/Master/server.ini)
| | worldgenoverride.lua(/Master/worldgenoverride.lua)
| | 其他文件
| |
| |—其他文件夹
|
|—Caves
| modoverrides.lua(/Caves/modoverrides.lua)
| server.ini(/Caves/server.ini)
| worldgenoverride.lua(/Caves/worldgenoverride.lua)
| 其他文件
|
|—其他文件夹

/home/dst/dst/mods
|
| dedicated_server_mods_setup.lua(/dedicated_server_mods_setup.lua)# 这个非必须
10、启动服务器

#该代码需要一行一行输,不能全部复制
su – dst
script /dev/null
cd ~/dst/bin
screen -S ground
# 手动按 ctrl + A,然后按D退出窗口
screen -S cave
# 手动按ctrl +A,然后按D退出窗口
screen -r ground
sh ./dst_overworld.sh
# 手动按 Ctrl + A 键,之后按 D
screen -r cave
sh ./dst_caves.sh
11、加载旧存档、重启服务器

先说停止服务器,两种方式,一种是直接在对应的screen中按ctrl+c停止服务,另外一种是进入游戏,以管理员的身份按~打开控制台,输入c_shutdown()。

加载旧存档,把Master和Caves里面的文件,除了server.ini以外的全部替换即可。

重启服务器:停止、启动。

OK,到此结束。今天踩坑踩了2个多小时。终于结束了。

饥荒服务器linux,搭建饥荒服务器

今天部署安装nginx  再启动的时候

nginx: [alert] could not open error log file: open() “/usr/local/nginx/logs/error.log” failed (2: No such file or directory)

2019/10/11 22:25:30 [emerg] 18269#0: open() “/usr/local/nginx/logs/access.log” failed (2: No such file or directory)

爆出这个错误  查看ftp之后才发现

此文件内没有这个文件  坑啊

22.30了想和朋友玩一下饥荒,就安装一下服务器

首先安装编译环境也

有两种方式 一种是sudo apt-get install libstdc++6:i386libgcc1:i386libcurl4-gnutls-dev:i386 lib32gcc1 这是*高权限好像

还有一种root权限yum install glibc.i686 libstdc++.i686 两种方法都得试试

2、创建一个文件夹在,并进入

wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz //这是下载steam

tar -xvzf steamcmd_linux.tar.gz //这是解压

执行这两个步骤

3、运行命令 这里踩了很久的坑

如果发现这个报错

/root/steamcmd/linux32/steamcmd: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

那么你就得运行一下这个 yum install glibc.i686

大致意思是因为 64位系统运行32位文件,当然就不成功了

成功之后就开始 sh steamcmd.sh 运行

这是成功的亚子

接着在本地进入游戏,登陆账号点击左下角账号

然后复制上面的网址,在浏览器打开。用浏览器打开主要是因为能下载配置

敲重点了!!

进入 dontstarvetogether_dedicated_server/bin 文件输入以下命令 这个文件是安装完毕才有的找一找不难

echo”./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root /home/dstsave -conf_dir dst -cluster World1 -shard Master”>

echo”./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root /home/dstsave -conf_dir dst -cluster World1 -shard Cave”> cave_start.sh

$ chmod +x master_start.sh cave_start.sh

之后在bin文件能看到

ios入门攻略 07篇 C语言基础【循环结构之for语句,打印九九乘法表】

for循环

语法:

for(表达式1;表达式2;表达式3){
循环体;

}

 

语义:1.先执行表达式1,跳转到2

2.判断表达式2的结果是否为真,如果为真,跳转到3,否则跳转到5

3.执行循环体,执行完毕,跳转到4

4.执行表达式3,执行完毕跳转到2

5.跳出循环,循环结束

for循环的嵌套:

就是一个for循环里面还套了一个for循环

一般用来控制平面

 

精华:

外层循环控制行数

内层循环控制列数

例1:打印图形   *

*  *

*  *   *

*  *   *   *

*  *   *   *   *

#include <stdio.h>

int main(int argc, const char * argv[]) {
for (int i=0; i<5; i++) { //控制行数,i就是行号

for (int j=0; j<=i; j++) {//j控制列上打印的个数

printf(“*  “);

}

printf(“\n”); //换行

}

 

return 0;

}

例2:打印九九乘法表;
#include <stdio.h>

int main(int argc, const char * argv[]) {
for(int i=1;i<=9;i++){ //i控制行数

 

for(int j=1;j<=i;j++){
printf(“%d*%d=%d    “,j,i,j*i);

}

 

printf(“\n”);//换行

}

 

return 0;

}

运行结果:

1*1=1

1*2=2    2*2=4

1*3=3    2*3=6    3*3=9

1*4=4    2*4=8    3*4=12    4*4=16

1*5=5    2*5=10    3*5=15    4*5=20    5*5=25

1*6=6    2*6=12    3*6=18    4*6=24    5*6=30    6*6=36

1*7=7    2*7=14    3*7=21    4*7=28    5*7=35    6*7=42    7*7=49

1*8=8    2*8=16    3*8=24    4*8=32    5*8=40    6*8=48    7*8=56    8*8=64

1*9=9    2*9=18    3*9=27    4*9=36    5*9=45    6*9=54    7*9=63    8*9=72    9*9=81

Program ended with exit code: 0

ios入门攻略 06篇 C语言基础【循环结构之while ,do-while语句】

前言:

*大的区别就是:do-while是先执行循环体,再判断,while是先判断再执行

 

while 里面的循环体很可能1次都不会被执行

do-while 里面的循环体至少被执行1次—-   (循环体需要至少执行1次的时候用)

一:while语句
while语句的基本语法:

 

while(表达式){
循环体;

}

 

 

语义:

1.先判断表达式是否成立,如果成立,则跳转2,否则跳转3

2.执行循环体,执行完毕跳转到1

3.跳出循环,循环结束

while循环需要注意的地方:

 

1.防止死循环。避免条件永真或永假。如果永真死循环,如果永假不循环,写起来毫无意义

2.while循环后面千万不要加分号

3.记得结束循环的语句不要忘了

4.循环跟if语句一样的地方就是:大括号可以省略。只能控制离它*近的一条语句,并且这条语句不能是声明变量的语句

例子:循环一共输出 10 遍:Hello, World!

#include <stdio.h>

int main(int argc, const char * argv[]) {
//循环变量,用来控制循环的次数的

int i = 0;

 

while (i < 10) { //改变<后面的数字就能控制循环的次数,并且后面的数字是循环额次数

 

printf(“Hello, World!\n”);

i++; //控制循环结束的语句

}

return 0;

}

二、do-while语句
do-while的语法:

 

do{
循环体;

 

}while(表达式);

 

注意:while的小括号后面一定要加分号

 

语义:

1.执行循环体,跳转到2

2.判断表达式的结果是否为真,如果为真,跳转到1,否则跳转到3

3.跳出循环,循环结束

例子:用do-while求1-100的总和;
#include <stdio.h>

int main(int argc, const char * argv[]) {
int i = 1;

int sum = 0;

 

do{
sum += i;

i++;

 

}while(i<=100);

 

printf(“%d\n”,sum);

 

return 0;

}

ios入门攻略 05篇 C语言基础【分支结构之switch语句】

分支结构有两大类语句:一种是if  一种是switch

二、switch语句

 

switch语法:

switch(表达式){
 

case 常量表达式1:

语句块1

break;

 

case 常量表达式2:

语句块2

break;

 

case 常量表达式3:

语句块3

break;

………………

 

default:

语句块n

break;

}

 

语义:先得出表达式的结果,根据结果跳转到相应的case语句块里面去执行

 

表达式结果  == 常量表达式  就叫相应的case语句块

 

如果case 后面的常量表达式没有一个跟表达式结果对应的

 

那么就跳转到 default里面执行语句块n

 

 

 

switch语句的穿透问题:

 

当case块里面不加break的时候,会发生穿透

 

穿透意思:就是从这个case块里面执行完语句后,会继续跳到下一个case块里面继续执行

 

所以,我们必须加break,防止穿透

 

break可以跳出当前的switch语句

【switch语句需要注意的地方】:

 

1.switch语句后面的小括号只能写整数类型的表达式,否则会报错

 

2.case后面只能接常量表达式

 

3.case后面的常量表达式不能有重复的值

 

4.switch小括号后面不要加分号

 

5.case后面不能立即声明变量,除非在声明前面加一条或者N条语句

 

6.如果不加大括号声明的变量,其他case块也可以访问

 

7.default可以写在任意位置,不影响结果