服务器的几种异常终止

服务器的几种异常终止,第1张

这种情况发生在TCP 3次握手刚好完成,服务器TCP将连接放入到已经建立好连接队列中,此时客户端给一个RST,接下来accept返回,不过这时accept返回的是ECONNECTABORT错误这不是一个致命错误。2、服务器进程终止过程如下:a、kill掉服务进程,作为进程善后处理的部分,所有打开的文件描述符被关闭,这导致服务端TCP(注意"服务端"和"服务端TCP"是不同概念)发送FIN给客户端,客户端TCP响应以ACK。b、客户端此时正阻塞在scanf函数(基于上篇中提到的客户端模型),这导致客户端不知道服务端TCP已经关闭连接。c、客户端在scanf返回后调用write向服务端发数据,由于服务端已经被kill掉,所以服务端TCP会发送一个RST给客户端TCPd、客户端在发送完数据后立即调用read读取数据,由于有第一步的FIN,read立即返回0(表示EOF),然而客户端希望的是收到刚才发送的数据而不是EOF。如果客户端接着往服务端发数据,将诱发服务端TCP向服务端发送SIGPIPE信号,因为向接收到RST的套接口写数据都会收到此信号问题的本质在于客户端同时处理两个描述字--套接口和用户输入,程序被单纯地阻塞在一个源上了。这个问题可以通过1、设置非阻塞模式。2、采用select以及epoll处理。3、服务器主机崩溃在客户TCP发送数据后,由于接收不到ACK,它将试图一直重传,直到最后放弃,并返回给客户进程一个出错信息。ETIMEOUT表示没有相应,EHOSTUNREACH表示路由器判定主机不可达。4、服务器崩溃后重启由于服务端TCP丢失了以前的连接信息,这将导致服务端发送一个RST,而此时客户端阻塞在read函数,这将导致返回一个ECONNECTRESET错误5、服务器关机服务器关机时init进程会先发送SIGTERM(此信号可捕获)给所有进程,再过一段时间发送SIGKILL(次信号不可捕获)给仍然在运行的程序,这时就和服务器进程终止一样了。

您问的是xshell去链接测试服务器,出现提示:Connection closed by foreign host是什么情况,该怎么办吗?产生原因及解决方案如下:
1、产生原因
:当你的客户端突然断开时,服务器端的TCP连接就处于一个半打开状态。当下一次同一客户机再次建立 TCP连接时,服务器检测到这个半打开的TCP连接,并向客户机回传一个置位RST的TCP报文,客户机就会显示connection closed by foreign host。
2、解决方案
:第一种是防火墙解决方案,就是排查防火墙。
第二种是TCP连接的解决方案:看下服务器的地址,在服务器上kill下端口或者重启下服务器。

其实我的世界作弊码这样的称呼并不准确,他们是MC当中的命令,每一个命令都是有着固定的格式使用起来还是十分方便的。
/achievement 获得/移除玩家的成就。
/ban 添加一个玩家到黑名单中。
/ban-ip 添加一个IP地址到黑名单中。
/banlist 显示黑名单。
/blockdata 修改一个方块的数据标签。
/clear 从玩家的物品栏清除物品。
/clone 将方块从一个位置复制到另一位置。
/debug 开始或终止一个 debugging session。
/defaultgamemode 设定默认的游戏模式。
/deop 撤销一位玩家的管理员身份。
/difficulty 设定难度。
/effect 添加或移除状态效果。
/enchant 附魔一个玩家的物品。
/entitydata 修改实体的数据标签。
/execute 执行另一条命令。
/fill 用一种特定方块填充一块区域。
/gamemode 设定一位玩家的游戏模式。
/gamerule 设定或查询一个游戏规则值。
/give 给予一位玩家一个物品。
/help 提供命令的帮助。
/kick 将一位玩家踢出服务器。
/kill 杀死实体(玩家、生物、物品等)。
/list 列出在服务器上的玩家。
/me 显示一条关于你自己的信息。
/op 给予一位玩家管理员身份。
/pardon 从黑名单移除项目。
/particle 制造颗粒效果。
/playsound 播放一个音效。
/publish 对局域网开放单人世界。
/replaceitem 替换物品栏中的物品。
/save-all 将服务器保存至硬盘中。
/save-off 禁用服务器自动保存。
/save-on 启用服务器自动保存。
/say 向多名玩家显示一条信息。
/scoreboard 管理对象、玩家和队伍。
/seed 显示世界种子。
/setblock 将一个方块变更至另一个方块。
/setidletimeout 设定踢出挂机玩家的时间。
/setworldspawn 设定出生点。
/spawnpoint 设定一位玩家的出生点。
/spreadplayers 将实体传送至随机位置。
/stats 通过命令的返回改变记分板对象。
/stop 停止服务器。
/summon 生成一个实体。
/tell 向其他玩家显示一条私人信息。
/tellraw 向玩家显示一条JSON信息。
/testfor 计算匹配特定条件的实体数。
/testforblock 探测一个方块是否在一个位置。
/testforblocks 探测两块区域内的方块是否匹配。
/time 改变或查询世界的游戏时间。
/title 管理屏幕标题。
/toggledownfall 切换天气。
/tp 传送实体。
/trigger 设定触发装置的激活。
/weather 设定天气。
/whitelist 管理服务器白名单。
/worldborder 管理世界边界。
/xp 增加或移除玩家的经验值。
由于每一个命令都有着固定的格式,因此并不是获得了命令就能立刻的使用它们。小编简单说几个小编常用的命令好了。
首先是/time 命令。使用方法就是按T打开输入框。然后输入:/time set 数字。这个数字就是时间了。游戏当中使用秒数来记录时间,0是清晨(凌晨动画结束)21000左右进入黑夜(黄昏漫画结束)。例如想立刻进入天亮就输入:/time set 0就可以了。
/weather是天气命令。共有clear(没天气,也就是晴天)rain(下雨)thunder(雷雨)三种天气。用法就是/weather 天气。比如想要雷雨天气,输入:/weather thunder就可以了。
另外告诉大家输入:/achievement give 就能瞬间获得所有的成就

ntsd命令:
ntsd -c q -p pid
ntsd -c q -pn exe
ntsd -c q -pn iexploreexe
taskkill和tskill命令:
taskkill /pid /f
taskkill /im exe /f
tskill pid | 进程名(不加扩展名)
具体自己看下提示:
ntsd/ tskill/ taskkill/


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/13454905.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-10
下一篇 2023-08-10

发表评论

登录后才能评论

评论列表(0条)

保存