Socket应用及系统操作webUpdate项目中提取技术点更新.docx
- 文档编号:23850326
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:19
- 大小:20.34KB
Socket应用及系统操作webUpdate项目中提取技术点更新.docx
《Socket应用及系统操作webUpdate项目中提取技术点更新.docx》由会员分享,可在线阅读,更多相关《Socket应用及系统操作webUpdate项目中提取技术点更新.docx(19页珍藏版)》请在冰豆网上搜索。
Socket应用及系统操作webUpdate项目中提取技术点更新
目录
一、卸载2
二、配置文件读写2
三、Socket传输部分6
四、Web项目加载监听器7
五、读取本机MAC地址8
六、安装包部分9
七、Linux下的shell脚本11
八、国际化的实现12
一、卸载
1、判断是否存在文件,不存在执行mdC:
\Backup(创建文件夹)
ifnotexistC:
\BackupmdC:
\Backup
2、复制文件到11.txt到22目录下
xcopyC:
\Backup\11.txtD:
\22
3、关闭tomcat
netstarttomcat
4、开启tomcat
netstarttomcat
5、如果tomcat开启则调用start11.txt这个语句
tasklist|findstr/i"tomcat*"&&start11.txt
6、删除文件safety.xml
delC:
\WINDOWS\system32\safety.xml
二、配置文件读写
java读写xml操作
略。
三、Socket传输部分
1、客户端发送平台信息
publicvoidsendOS(StringosMessage)throwsIOException{
out=newDataOutputStream(
newBufferedOutputStream(socket.getOutputStream()));
out.writeUTF(osMessage);
out.flush();
}
out为建立的输出流,最外层是DataOutputStream,包装BufferedOutputStream,最内层为Socket输出流
out.writeUTF(osMessage)将信息写到输出流
out.flush()强制将流内的数据写出。
2、服务端接收平台信息
publicStringgetOS(){
dis=newDataInputStream(newBufferedInputStream(s
.getInputStream()));
osMessage+=dis.readUTF();
//打印出客户端平台信息:
System.out.println("客户端平台信息:
"+osMessage);
returnosMessage;
}
dis为建立的输入流,最外层是DataInputStream,包装BufferedInputStream,最内层为Socket输入流
osMessage+=dis.readUTF(),从流中按字节读取数据,存到字符串osMessage中
返回字符串osMessage
四、Web项目加载监听器
1、监听类
Web.xml文件
classSayHelloextendsHttpServletimplementsServletContectListener
{
//服务器启动时执行该事件
publicvoidcontextInitialized(ServletContextEventsce)
{
publicvoidsayHello()
{
System.out.println(“Hello”);
}
}
//服务器结束执行
publicvoidcontextDestroyed(ServletContextEventarg0){
//TODOAuto-generatedmethodstub
}
}
2、监听器用于判断是否是合法用户并关闭Tomcat,Exception关闭Tomcat服务器异常后,1分钟重新执行此方法
publicvoidcontextInitialized(ServletContextEventsce){
AutoUpdateLockaul=newAutoUpdateLock();
booleanb=aul.checkMac();//调用checkMac方法获取比较mac地址的值是否相等
if(!
b)
{
System.out.println("进入关闭计时器");
Timert=newTimer();
t.schedule(newTimerTask(){
publicvoidrun(){
try{
System.out.println("关闭操作开始");
Sockets=newSocket("localhost",8005);
OutputStreamWriterout=newOutputStreamWriter(s.getOutputStream());
out.write("SHUTDOWN");
out.flush();
out.close();
s.close();
}catch(UnknownHostExceptione){
System.out.println("Lock-服务器关闭端口异常");
e.printStackTrace();
return;
}catch(IOExceptione){
System.out.println("Lock-向服务器端口发送关闭信息IO异常");
e.printStackTrace();
}
catch(Exceptione){
System.out.println("Lock-关闭异常");
e.printStackTrace();
}
}
},60*1000,10*60*1000);
}
}
五、读取本机MAC地址
1、获取当前操作系统名称.
publicclassAutoUpdateGetMacAddress{
publicstaticStringgetOSName(){
returnSystem.getProperty("os.name").toLowerCase();
}
/**
2、获取Unix网卡的mac地址.
publicstaticStringgetUnixMACAddress(){
Stringmac=null;
BufferedReaderbufferedReader=null;
Processprocess=null;
try{
/**
*Unix下的命令,一般取eth0作为本地主网卡显示信息中包含有mac地址信息
*/
process=Runtime.getRuntime().exec("ifconfigeth0");
bufferedReader=newBufferedReader(newInputStreamReader(process
.getInputStream()));
Stringline=null;
intindex=-1;
while((line=bufferedReader.readLine())!
=null){
/**
*寻找标示字符串[hwaddr]
*/
index=line.toLowerCase().indexOf("hwaddr");
/**
*找到了
*/
if(index!
=-1){
/**
*取出mac地址并去除2边空格
*/
mac=line.substring(index+"hwaddr".length()+1).trim();
break;
}
}
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(bufferedReader!
=null){
bufferedReader.close();
}
}catch(IOExceptione1){
e1.printStackTrace();
}
bufferedReader=null;
process=null;
}
returnmac;
}
3、获取Linux网卡的mac地址.
publicstaticStringgetLinuxMACAddress(){
Stringmac=null;
BufferedReaderbufferedReader=null;
Processprocess=null;
try{
/**
*linux下的命令,一般取eth0作为本地主网卡显示信息中包含有mac地址信息
*/
process=Runtime.getRuntime().exec("ifconfigeth0");
bufferedReader=newBufferedReader(newInputStreamReader(process
.getInputStream()));
Stringline=null;
intindex=-1;
while((line=bufferedReader.readLine())!
=null){
index=line.toLowerCase().indexOf("硬件地址");
/**
*找到了
*/
if(index!
=-1){
/**
*取出mac地址并去除2边空格
*/
mac=line.substring(index+4).trim();
break;
}
}
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(bufferedReader!
=null){
bufferedReader.close();
}
}catch(IOExceptione1){
e1.printStackTrace();
}
bufferedReader=null;
process=null;
}
returnmac;
}
4、获取widnows网卡的mac地址.
publicstaticStringgetWindowsMACAddress(){
Stringmac=null;
BufferedReaderbufferedReader=null;
Processprocess=null;
try{
/**
*windows下的命令,显示信息中包含有mac地址信息
*/
process=Runtime.getRuntime().exec("ipconfig/all");
bufferedReader=newBufferedReader(newInputStreamReader(process
.getInputStream()));
Stringline=null;
intindex=-1;
while((line=bufferedReader.readLine())!
=null){
/**
*寻找标示字符串[physicaladdress]
*/
index=line.toLowerCase().indexOf("physicaladdress");
if(index!
=-1){
index=line.indexOf(":
");
if(index!
=-1){
/**
*取出mac地址并去除2边空格
*/
mac=line.substring(index+1).trim();
}
break;
}
}
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(bufferedReader!
=null){
bufferedReader.close();
}
}catch(IOExceptione1){
e1.printStackTrace();
}
bufferedReader=null;
process=null;
}
returnmac;
}
六、安装包部分
1、判断用户权限(以下为脚本代码)
@echooff
setlocalenabledelayedexpansion
:
Main
cls
set/anum2=1024*1024
for%%iin(c)do(
ifexist%%i:
\(
setnum3_str=
setnum4=
for/f"tokens=3"%%jin('dir/-c%%i:
\')dosetnum1=%%j
ifnot"!
num1!
"=="0"(
call:
loop
for/f"delims=0tokens=*"%%kin("!
num3_str!
")dosetnum3_str=%%k
echo!
num3_str!
)
)
)
)
:
loop
:
:
求商
set/anum3=%num4%%num1:
~0,1%/%num2%
:
:
求商序列
setnum3_str=%num3_str%%num3%
:
:
求余
set/anum4=%num4%%num1:
~0,1%%%%num2%
if%num4%equ0setnum4=
setnum1=%num1:
~1%
ifnot"%num1%"==""gotoloop
goto:
eof
2、判断安全文件是否存在
publicbooleanjudgeConfigFile()
{
Filefile=newFile("/etc/safety.xml");
returnfile.exists();
}
3执行bat文件进行判断系统用户
publicbooleanbatjudge()
{
Stringstrline="";
ExecuteInstallei=newExecuteInstall();
Processp=ei.execBat("调用bat路径");
InputStreamin=p.getInputStream();
BufferedReaderbr=newBufferedReader(newInputStreamReader(in));
try{
strline=br.readLine();//读取的返回值是1为管理员用户,是2为普通用户
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
returnfalse;
}
if(strline.equals("1"))
returntrue;
if(strline.equals("2"))
returnfalse;
returnfalse;
}
4.检测某文件夹下的所有信息及文件夹大小
//计算总大小的属性
publicstaticdoublesum=0;
//存储文件位置的属性
publicstaticMap
//存储文件大小的属性
publicstaticMap
//存储文件信息时的标识符属性
staticintkey=0;
/**
*获取目标文件夹的大小,结果保存在属性sum(递归)
*/
publicbooleangetFileUrlSize(Filefile)
{
Filef=file;
String[]str={};
if(f.isDirectory())//判断此文件是否是一个文件夹
str=f.list();
else
{
file_map.put(key,file.getCanonicalPath());//记录每一个检查过的文件的路径
file_size.put(key,String.valueOf(file.length()));//记录每一个检查过的文件的大小
key++;
sum+=file.length();//将文件的大小添加到和中sum
returnfalse;
}
for(inti=0;i { file=newFile(f.getAbsolutePath()+"\\"+str[i]); if(! newMyFileAndBatUse().getFileUrlSize(file)) continue; } returntrue; } 5、Java代码判断一个文件是否存在; publicbooleanjudgeConfigFile() { Filefile=newFile("/etc/safety.xml"); returnfile.exists(); } 6、进度条 /** *创造一个进度条对话框 * *@paramprogress_number *: 目标文件的总大小 */ 略。 七、Linux下的shell脚本 1.Shell脚本使用时 创建文件夹的sh文件,直接调用时,生成的文件夹会自动在文件夹后面,生成类似空格不可看见的东西。 导致别的可执行文件找不到你创建的文件 解决方法: 右键此XXX.sh文件选择权限,把允许以程序执行文件的选项勾掉,当java代码调用shell脚本时。 就会创建你想要的文件夹了。 2.判断是否为系统用户 name=`whoami` if[$name=root] then printf"您是系统用户$name可以使用\n" else printf"您不是系统用户$name" fi 3、判断磁盘空间 df-hl/|grep/|awk'{print$4}' 此代码自动返回磁盘剩余大小。 LINUX: 4、判断是否存在文件,不存在则执行echo2(输出字符2) if[-x/usr/local/apache-tomcat-5.5.12/webapps/DL_webService_1];then echo1 else echo2 fi 5、复制文件到11.txt到22目录下 cpC: \Backup\11.txtD: \22 6、关闭tomcat sh/usr/local/apache-tomcat-5.5.12/bin/shutdown.sh 7、开启tomcat sh/usr/local/apache-tomcat-5.5.12/bin/startup.sh 8、如果tomcat开启则调用start11.txt这个语句 tasklist|findstr/i"tomcat*"&&start11.txt 9、删除文件safety.xml rm-rfC: \WINDOWS\system32\safety.xml 八、国际化的实现 1.判断系统语言,并根据系统语言选择读取Properties文件。 //国际化似有方法判断系统语言。 privateStringlanguage(){ Strings=System.getProperty("user.language"); Stringss=null; if(s.equals("zh")){ ss="Chinese"; }else{ ss="English"; } returnss; } //根据判断的语言判断并读取Properties文件。 ResourceBundle.getBundle("Global-EN"); //汉语读取出来之后是unicode码这里转码为汉字。 privateStringcodeformat(Stringss){ Charsetcs=Charset.forName("GBK"); CharsetDecodercd=cs.newDecoder(); CharBuffercb=null; try{ cb=cd.decode(ByteBuffer.wrap(ss.getBytes())); }catch(CharacterCodingExceptione){ e.printStackTrace(); } returncb.toString(); } 2、异常处理 //使用自定义异常对Properties文件存在进行异常处理。 publicclassGlobalExceptionextendsException{ publicFrameWorkfw; publicStringgetMessage(){ fw=newFrameWork("国际化错误",null,500,300,260,200,false,true); fw.setFrameLabel("国际化文件缺失或移动,请重新安装
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Socket 应用 系统 操作 webUpdate 项目 提取 技术 更新