java网络编程实验题远程访问服务器目录的程序

java网络编程实验题远程访问服务器目录的程序,第1张

代码如下。。。我测试过了。。。。下面两个类是在同一台机器上进行测试的,先运行Server.java,再运行Client.java

import java.io.*

import java.net.*

import java.text.SimpleDateFormat

import java.util.Date

public class Server {

public static void main(String[] args) throws Exception{

ServerSocket ss = new ServerSocket(8080)

Socket socket = ss.accept()

BufferedReader in = //获取客户端发过来的消息

new BufferedReader(

new InputStreamReader(socket.getInputStream()))

PrintWriter out = //用于向客户端发送消息

new PrintWriter(

new OutputStreamWriter(

socket.getOutputStream()),true)

while(true){

String message = in.readLine()//读取消息

if("quit".equals(message))//退出命令

break

String s[] = message.split("\\s+")

if("dir".equals(s[0])){

File dir = new File(s[1])

File[] files = dir.listFiles()

//向客户端发送文件消息

for(File file:files){

Date date = new Date(file.lastModified())

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd")//日期格式化

FileInputStream is = new FileInputStream(file)

out.println(file.getName()+"\t"+df.format(date)+"\t"+((is.available()+1023)/1024)+"k")

}

out.println("ok")

}

}

socket.close()

in.close()

out.close()

ss.close()

}

}

-------------------------------------------------------------------------------------------------------------

import java.io.*

import java.net.*

public class Client {

public static void main(String[] args) throws Exception{

InetAddress add = InetAddress.getByName(null)

Socket socket = new Socket(add,8080)

BufferedReader in = //获取服务器端发过来的消息

new BufferedReader(

new InputStreamReader(socket.getInputStream()))

PrintWriter out = //用于向服务器端发送消息

new PrintWriter(

new OutputStreamWriter(

socket.getOutputStream()),true)

out.println("dir d:/test")

String mes

while(true){

mes = in.readLine()

if("ok".equals(mes))

break

System.out.println(mes)

}

out.println("quit")

socket.close()

in.close()

out.close()

}

}

希望能帮到你。。。仍有问题可以追问或者直接HI我。。。

需要密码

1、使用java代码通过ssh登陆linux并执行命令,正常情况下sshd服务都会有,知道用户密码就可以使用这种方式了。2、要在远程linux服务器上执行命令,可以在linux服务器上启动一个服务做执行脚本的代理,不断接受来自你这个项目发来的脚本信息,然后执行,再把结果返回给你项目中去。第一种:以消息队列的方式发送这些脚本信息,linux代理不断接受,并返回结果。项目同时要不断接受结果。第二种:项目中产生的脚本,直接记录到数据库,linux上的代理访问这个数据库,获取脚本信息,并将执行结果写入数据库。项目中轮询执行结果。上面我说的消息队列可以采用activemq,或者rabbitmq这些。命令执行,java中直接Runtime.getRuntime().exec(command)就行了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/322406.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存