JAVA实验报告 读取服务器端的窗口

合集下载

java程序读取服务器端数据文件的方法

java程序读取服务器端数据文件的方法

java程序读取服务器端数据文件的方法
1. 使用Java IO流读取服务器端文件:
使用Java IO流可以读取服务器端文件,具体步骤如下:
(1)使用URL类的openStream()方法获取URL对象的输入流;
(2)使用BufferedReader类的readLine()方法读取文件内容;
(3)使用String类的split()方法将读取的内容按照指定的分隔符分割为字符串数组;
(4)使用Arrays类的toString()方法将字符串数组转换为字符串;
(5)使用String类的replace()方法替换掉特殊字符;
(6)使用String类的split()方法将字符串按照指定的分隔符分割为字符串数组;
(7)使用for循环遍历字符串数组,将每个字符串元素添加到ArrayList中;
(8)将ArrayList转换为字符串数组,并返回。

2. 使用Java NIO读取服务器端文件:
使用Java NIO可以读取服务器端文件,具体步骤如下:
(1)使用Paths类的get()方法获取服务器端文件的路径;
(2)使用Files类的readAllBytes()方法读取文件的所有字节;
(3)使用String类的split()方法将读取的内容按照指定的分隔符分割为字符串数组;
(4)使用for循环遍历字符串数组,将每个字符串元素添加到ArrayList中;
(5)将ArrayList转换为字符串数组,并返回。

数据窗口编程实验报告

数据窗口编程实验报告

一、实验目的1. 理解数据窗口的基本概念和功能。

2. 掌握数据窗口的创建、操作和使用方法。

3. 通过实验加深对数据窗口编程的理解和应用。

二、实验环境1. 操作系统:Windows 102. 开发环境:Delphi XE73. 数据库:Microsoft SQL Server 2014三、实验内容1. 数据窗口的创建2. 数据窗口的属性设置3. 数据窗口的控件操作4. 数据窗口的编程应用四、实验步骤1. 数据窗口的创建(1)打开Delphi XE7,创建一个新的VCL Forms应用程序。

(2)在Form1上添加一个TDBGrid控件,用于显示数据窗口。

(3)在Form1上添加一个TADOConnection控件,用于连接数据库。

(4)在Form1上添加一个TADOQuery控件,用于查询数据库。

(5)设置TADOConnection的连接字符串,连接到SQL Server数据库。

(6)设置TADOQuery的SQL语句,查询需要显示的数据。

(7)将TADOQuery的Data属性设置为TDBGrid的数据源。

2. 数据窗口的属性设置(1)设置TDBGrid的Caption属性,显示标题。

(2)设置TDBGrid的Columns属性,添加需要显示的列。

(3)设置TDBGrid的DataSource属性,关联到TADOQuery。

(4)设置TDBGrid的Column属性,调整列宽和标题。

3. 数据窗口的控件操作(1)在Form1上添加一个TButton控件,用于执行查询。

(2)编写TButton的OnClick事件处理程序,设置TADOQuery的Active属性为True,触发查询。

(3)在Form1上添加一个TButton控件,用于关闭查询。

(4)编写TButton的OnClick事件处理程序,设置TADOQuery的Active属性为False,关闭查询。

4. 数据窗口的编程应用(1)在Form1上添加一个TLabel控件,用于显示查询结果数量。

求代码。利用java读取服务器上的目录和文件

求代码。利用java读取服务器上的目录和文件

求代码。

利用java读取服务器上的目录和文件需求:有点类似于windows资源管理器的功能。

在服务器上指定的目录下,有一些文件夹和文件,读取后,在客户端左侧树中显示服务器上的文件夹,点击某个文件夹,则显示该文件夹下的文件。

当服务器上的文件夹和文件的名称、结构发生变化时,客户端也能自动适应。

向各位请教了,希望能有源码或者第三方类库之类的。

------回答---------------其他回答(10分)---------不知道你是不是要这个?public class ZipFileTest {public static void main(String[] args) {ZipFileTest zipFileT est = new ZipFileT est();List list = (ArrayList)zipFileTest.findFileName(path);for(int i=0;i<list.size();i++){System.out.println("遍历List:" + (String)list.get(i));}}//查找指定目录下的文件private List findFileName(String filepath) {File file = new File(filepath);List list = new ArrayList();File[] files=file.listFiles();String name = "";for(int i=0;i<files.length;i++){if(files[i].isFile()){if(files[i].getName().endsWith(".xls")){list.add(files[i].getName());}}}return list;}}------其他回答(10分)---------public class ZipFileTest {public static void main(String[] args) { ZipFileTest zipFileT est = new ZipFileT est();List list = (ArrayList)zipFileTest.findFileName(path); for(int i=0;i<list.size();i++){System.out.println("遍历List:" + (String)list.get(i)); }}//查找指定目录下的文件private List findFileName(String filepath) {File file = new File(filepath);List list = new ArrayList();File[] files=file.listFiles();String name = "";for(int i=0;i<files.length;i++){if(files[i].isFile()){if(files[i].getName().endsWith(".xls")){list.add(files[i].getName());}}}return list;}}[code=Java][/code]------其他回答(10分)---------参考下列代码,如列出某盘下的目录的代码import java.io.File;import java.util.Scanner;public class DirList{static Scanner sc = new Scanner(System.in);public static void main(String[] args) {System.out.print("\nEnter a path: ");String path = sc.nextLine();File dir = new File(path);if (!dir.exists() || !dir.isDirectory())System.out.println("\nThat directory doesn't exist."); else {System.out.println("\nListing directory tree of:"); System.out.println(dir.getPath());listDirectories(dir, " ");}}private static void listDirectories(File dir, String indent) { File[] dirs = dir.listFiles();for (File f : dirs) {if (f.isDirectory()) {System.out.println(indent + f.getName()); listDirectories(f, indent + " ");}}}}运行后:Enter a path: c:\\Listing directory tree of:c:\Ca_licConfig.MsiDocuments and SettingsAdministrator.dbvisconfigkeymaps.jprofiler5.myeclipsederby。

java获取服务器参数的方法

java获取服务器参数的方法

一、介绍在Java编程中,有时需要获取服务器的一些参数信息,例如服务器的IP位置区域、端口号等。

本文将介绍在Java中获取服务器参数的方法,帮助开发者更好地理解和利用Java编程语言。

二、获取服务器IP位置区域的方法服务器的IP位置区域是连接服务器的重要信息,可以使用以下方法获取服务器的IP位置区域:1. 使用InetAddress类的getLocalHost方法获取本地主机的InetAddress对象,然后调用getHostAddress方法获取IP位置区域。

```javaInetAddress localhost = InetAddress.getLocalHost();String ip = localhost.getHostAddress();System.out.println("服务器IP位置区域为:" + ip);```2. 如果服务器有多个网卡或多个IP位置区域,可以使用NetworkInterface类的getNetworkInterfaces方法获取所有的网络接口,然后遍历每个网络接口,再获取每个网络接口的InetAddress列表,最后获取每个InetAddress的IP位置区域。

```javaEnumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();while (interfaces.hasMoreElements()) {NetworkInterface networkInterface = interfaces.nextElement(); Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();while (addresses.hasMoreElements()) {InetAddress address = addresses.nextElement();if (!address.isLoopbackAddress() address instanceofInet4Address) {String ip = address.getHostAddress();System.out.println("服务器IP位置区域为:" + ip);}}}```三、获取服务器端口号的方法服务器端口号是服务端提供服务的端口,可以使用以下方法获取服务器的端口号:1. 如果是知道具体服务器的服务端口号,可以直接使用该端口号。

java实验报告材料二

java实验报告材料二

《Java技术》实验报告
实验一: 2017 年09 月
图2 Socket通信客户端界面
2.图1为Socket通信服务器端界面,点击该界面中的【Start】按钮,启动服务器监听服务(在图1界面中间的多行文本区域显示“Server starting…”字样)。

图2为Socket 通信客户端界面,点击该界面中的【Connect】按钮与服务器建立链接,并在图2所示界面中间的多行文本区域显示“Connect to server…”字样,当服务器端监听到客户端的连接后,在图1界面中间的多行文本区域追加一行“Client connected…”字样,并与客户端建立Socket连接。

3.当图1所示的服务器端和图2所示的客户机端建立Socket连接后,编程实现服务端、客户端之间的“单向通信”:在客户端的输入界面发送消息,在服务端接收该消息,并将接收到对方的数据追加显示在多行文本框中。

实用文档
标准文案。

JAVA实验报告 读取服务器端的窗口

JAVA实验报告 读取服务器端的窗口

socket=t; try{out=new ObjectOutputStream(socket.getOutputStream());
in=new ObjectInputStream(socket.getInputStream());
} catch(IOException e){} window=new JFrame(); text=new JTextArea(); for(int i=1;i<+20;i++){
import java.io.*; import .*; import java.util.*; public class Client {
public static void main(String[] args) { Scanner scanner =new Scanner (System. in); Socket mysocket=null; ObjectInputStream inObject=null; ObjectOutputStream outObject=null; Thread thread; ReadWindow readWindow=null;
text.append("你好,我是服务器上的文本区组件\n"); } text.setBackground(Color.yellow); window.add(text); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void run(){ try{out.writeObject(window); } catch(IOException e){
} } catch(Exception e){ System.out.println("服务器已断开"+e); } } } class ReadWindow implements Runnable{ ObjectInputStream in; public void setObjectInputStream(ObjectInputStream in){

java程序读取服务器端数据文件的方法

java程序读取服务器端数据文件的方法

java程序读取服务器端数据文件的方法Java作为一种高级的面向对象的编程语言,具有广泛的应用前景,尤其是作为服务器端语言时,其功能也越来越强大。

本文以“Java 程序读取服务器端数据文件的方法”为标题,介绍如何使用Java进行服务器端数据文件的读取。

首先,不管是什么样的服务器,它都会存储有关用户信息和应用程序配置信息的数据文件。

Java虚拟机提供了各种API来读取并解析这些文件,这样,我们可以从中获取所需的信息。

一般来说,从服务器端读取数据文件需要三个步骤:1.连接服务器:首先,我们必须建立与服务器的连接,这通过使用Socket类来实现,我们可以调用Socket的构造方法来建立连接,如下所示:Socket socket = new Socket(hostName, port);2.读取数据文件:然后,我们可以使用InputStream类来读取服务器端的数据文件,代码如下所示:InputStream inputStream = s.getInputStream();3.解析数据文件:最后,我们可以通过Java编程解析读取到的文件,比如,若要读取XML文件,可以使用JAXP解析器,代码如下所示:DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document doc = builder.parse(inputStream);除了XML文件,还可以使用Java提供的其他工具来解析和读取其他格式的文件,比如JSON、CSV等。

此外,在实际项目中,可以使用现成的Java框架来读取服务器端的数据文件,比如:Jackson、Gson等,只需要调用相应的方法就可以方便快捷地读取服务器端的数据文件了。

综上所述,通过Java编程可以实现从服务器端读取数据文件的功能,无论是使用原生的Java API还是使用框架,都可以满足我们的需求,从而更好地提高程序的可读性和可维护性。

Java网络编程实验3

Java网络编程实验3

《软件开发基础(Java)》实验报告实验:Java网络编程一、实验目的1、了解网络协议的基本概念和区分OSI 模型和TCP/IP 模型的不同点。

2、熟悉输入输出流、以及常见的流处理工具。

3、掌握基于TCP 编程和UDP 编程的基本步骤和对相关核心类的了解。

4、掌握简单的应用服务器工作原理,为后面Web 服务器开发打好基础。

二、阅读结果1、服务器端:客户端:2、服务器端:客户端:三、写程序题目一源程序运行结果题目二实现简单WebServer,要求服务器可以处理返回给客户单一段字符串,该字符串信息是读取服务器文件系统的文件,文件格式可以是XML 文件或者txt 文件。

具体参考实现课本5.4.5。

源程序1)Server类:package cn.java.caixiaoqing.webserver;import java.io.*;import .ServerSocket;import .Socket;public class Server {public static void main(String[] args) throws Exception {ServerSocket serverSocket = new ServerSocket(8888);Socket socket = serverSocket.accept();BufferedReader bufferedReader = new BufferedReader(newInputStreamReader(socket.getInputStream()));PrintWriter printWriter = new PrintWriter(socket.getOutputStream());char[] buf = new char[1024];int len = bufferedReader.read(buf);StringBuffer reqStr = new StringBuffer();for (int i = 0; i < len; i++) {reqStr.append(buf[i]);}System.out.println(reqStr.toString());String responseString = getResponseString();printWriter.println(new String(responseString.getBytes("gbk"),"gbk"));printWriter.flush();socket.close();}private static String getResponseString() throws IOException {File file = new File("简单WebServer/src/cn/java/caixiaoqing/file/response.txt"); // File file = new File("简单WebServer/src/cn/java/caixiaoqing/file/response.xml");FileReader fileReader = new FileReader(file);char[] buffer = new char[(int) file.length()];int read = fileReader.read(buffer);StringBuffer stringBuffer = new StringBuffer(read);for (int i = 0; i < read; i++) {stringBuffer.append(buffer[i]);}return stringBuffer.toString();}}2)response.xml:<html><h1>欢迎光临!</h1></html>运行结果服务器端:客户端:四、实验小结1、遇到问题及解决方式1)相对路径一直有问题,我先是写了一个junit测试类来测试路径的可行性,本来junit已经跑通了,已经得到了文本的内容,但是不知到为什么一把他用到getResponseString中的时候,就一直报FileNotFoundException,就是找不到我的文件。

java 通过浏览器读取客户端文件的方法

java 通过浏览器读取客户端文件的方法

java 通过浏览器读取客户端文件的方法Java通过浏览器读取客户端文件的方法介绍在Web开发中,经常需要从浏览器读取客户端文件,Java提供了多种方法来实现这一功能。

本文将详细介绍几种常用的方法。

方法一:使用HTML表单上传文件1.在HTML中,使用<input type="file">元素创建一个文件上传表单。

2.在Java中,使用HttpServletRequest对象的getPart方法获取上传的文件。

3.使用Part对象的getInputStream方法获取文件的输入流,进而读取文件的内容。

方法二:使用Apache Commons FileUpload库1.引入Apache Commons FileUpload库的依赖。

2.在Java中,使用ServletFileUpload类解析上传的文件。

3.使用FileItem类获取文件的输入流,进而读取文件的内容。

方法三:使用Spring MVC框架的MultipartResolver1.在Spring MVC配置文件中配置MultipartResolver,例如使用CommonsMultipartResolver。

2.在Java中,使用MultipartFile对象获取上传的文件。

3.使用MultipartFile对象的getInputStream方法获取文件的输入流,进而读取文件的内容。

方法四:使用Servlet的InputStream获取请求体1.在Java中,使用HttpServletRequest对象的getInputStream方法获取请求体的输入流。

2.使用输入流读取请求体的内容。

3.根据请求体的格式解析文件的内容,例如使用multipart/form-data格式。

方法五:使用WebSocket传输文件1.在Java中,使用WebSocket处理客户端的请求。

2.在WebSocket中,使用ByteBuffer对象接收和发送文件的内容。

JAVA实验报告心得

JAVA实验报告心得

JAVA实验报告心得通过本学期的JAVA实验,我对JAVA语言的运用有了更加深刻的理解,并且掌握了一些基本的编程技巧和方法。

在实验中,我学会了如何查找和使用JAVA开发文档,如何编写简单的JAVA程序以及如何调试和测试程序等等。

这些实践让我对JAVA调试技术有了更加深入的了解,使我更加熟练地使用JAVA语言进行编程。

在实验过程中,我依次完成了各个实验的要求,并且都取得了不错的成绩。

在实验一中,我学会了使用Eclipse编写简单的JAVA程序,并且能够调试、编译和运行程序。

在实验二中,我学会了使用Swing组件编写一个简单的GUI窗口程序,并且能够处理用户的输入,实现相应的功能。

实验三是关于异常处理和文件读取的,我学会了如何使用try-catch结构来捕获异常并且处理文件读取错误。

实验四是关于面向对象的编程,我学会了如何定义和使用类,以及如何实现继承和多态等概念。

在实验过程中,我遇到了很多问题,但通过查找资料和请教老师,我都成功地解决了这些问题。

在实验一中,我遇到了编译错误和运行错误的问题,但我通过查看错误信息和找出问题的原因,最终成功解决了这些问题。

在实验三中,我遇到了文件读取错误的问题,但经过仔细检查代码和重新编写代码,我成功解决了文件读取错误的问题。

这些问题的解决过程让我更加熟悉了JAVA的调试和错误处理技术,提高了我的编程能力。

通过本学期的JAVA实验,我意识到编程不仅仅是写出一段代码,更重要的是要理解问题的本质,设计合理的解决方案,并且能够使用合适的工具和技术来实现这些方案。

在实验中,我学会了如何分析和理解一个问题,并且根据问题的要求设计出合适的解决方案。

通过不断地实践和练习,我发现自己的编程能力得到了一定的提高,我能够更加独立地完成编程任务,并且能够在遇到问题时根据自己的经验和知识进行解决。

通过本学期的实验,我还明白了编程不仅仅是一种技术,更是一种思维方式。

在编程过程中,我们需要有条理地思考问题,从不同的角度来分析问题,并且能够找到最合适的解决方案。

java程序读取服务器端数据文件的方法

java程序读取服务器端数据文件的方法

java程序读取服务器端数据文件的方法近代科技进步突飞猛进,计算机技术及相关技术也在迅猛发展。

比起计算机处理本地数据文件,读取服务器端数据文件更加受到重视,其中,Java程序读取服务器端数据文件的方法更是受到广大Java开发者的关注。

为此,本文将从总体上介绍Java程序读取服务器端数据文件的基本原理,并以此为基础,详细介绍该方法的实现步骤。

首先,在进行Java程序读取服务器端数据文件之前,必须了解其基本原理。

Java程序读取服务器端数据文件,实际上是一种利用网络传输技术实现的本地客户端通信数据文件的操作。

Java程序读取服务器端数据文件的原理是:首先,在客户端向服务器发送请求,如果服务器接收到此请求,便会将要读取的文件等相关数据发送到客户端。

接着,客户端接收到此文件及数据后,便会从其中读取有用的数据,并可以实现程序的自动操作。

其次,基于上述原理,本文将介绍Java程序读取服务器端数据文件的具体实现步骤。

1.搭建服务器端环境:需要使用服务器端软件如Apache Tomcat 等,或者使用Oracle等数据库服务器,以便将需要读取的数据文件存放到服务器端的操作系统中;2.在客户端设置连接:首先,必须建立客户端至服务器之间的网络连接,以便客户端可以与服务器端进行通信;3.发送请求:当连接建立之后,客户端需要根据相关协议,向服务器发送相应的请求,以便服务器可以识别其所发出的请求;4.处理请求:一旦客户端发送请求之后,服务器会根据其请求内容,对请求进行处理,并将有用的数据文件及相关信息发送至客户端的操作系统;5.读取数据:当客户端接收到服务器端发送的文件及相关数据后,会根据其相应协议,按照一定格式,从中读取有用的数据,并保存至本地文件;6.结束通信:最后,客户端根据服务器端所发送的相应信号,关掉与服务器端的通信连接,以便释放网络资源。

综上所述,Java程序读取服务器端数据文件是一种利用网络传输技术实现的本地客户端通讯数据文件的操作,其原理和实现步骤均有所涉及,相信经过本文的介绍,大家对Java程序读取服务器端数据文件有了一个大致的了解。

java实现读写服务器文件

java实现读写服务器文件

java实现读写服务器⽂件这个主要实现的Java远程访问服务器的读写⽂件操作,⾃动登录读写⽂件pom.xml中要配置⽂件loginServer主要类中有个getProperties这个⽅法是的地址信息的,需要先配置地址信息然后调⽤登录去做登录的操作LoginServer.login(LoginServer.getProperties(Config.Alertkey1 +“。

json”),false );如果这个单独的看不懂你可以看看我在项⽬中是怎么使⽤的项⽬中的服务器是内⽹服务器需要配置成你⾃⼰的服务器LoginServer主要的⼯具类1.2.package com.maxd.upload;import java.io.*;import java.util.ArrayList;import java.util.List;import java.util.Properties;import java.util.regex.Matcher;import java.util.regex.Pattern;import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.SCPClient;import ch.ethz.ssh2.StreamGobbler;import com.jcraft.jsch.JSch;import com.jcraft.jsch.Session;import com.maxd.utils.Config;public class LoginServer {/*** @param ip 服务器IP* @param user 服务器⽤户名* @param pwd 服务器密码* @param port 端⼝* @param privateKeyPath 可为空* @param passphrase 可为空* @param sourcePath 本地⽂件路径* @param destinationPath 上传路径*/private static void downLoadFile(String ip, String user, String pwd, String port, String privateKeyPath, String passphrase, String sourcePath, String destinationPath) {doWrite(ip, user, pwd, port, privateKeyPath, passphrase, sourcePath, destinationPath);}/*** 设置配置* @param fileName* @return*/public static Properties getProperties(String fileName) {Properties properties = new Properties();properties.setProperty("ip", Config.hostname);properties.setProperty("user", ername);properties.setProperty("pwd", Config.password);properties.setProperty("port", String.valueOf(Config.port));properties.setProperty("sourcePath", Config.sourcePath + fileName);properties.setProperty("destinationPath", Config.destinationPath);return properties;}/*** @param properties* @param isRead true表⽰读取 false表⽰写⼊*/public static void login(Properties properties, boolean isRead) {String ip = properties.getProperty("ip");String user = properties.getProperty("user");String pwd = properties.getProperty("pwd");String port = properties.getProperty("port");String privateKeyPath = properties.getProperty("privateKeyPath");String passphrase = properties.getProperty("passphrase");String sourcePath = properties.getProperty("sourcePath");String destinationPath = properties.getProperty("destinationPath");if (!isRead) {//写⼊本地⽂件到远程服务器doWrite(ip, user, pwd, port, privateKeyPath, passphrase, sourcePath, destinationPath);} else {//读取远程⽂件到本地readConnect();}}/*** @throws IOException* @description 读⽂件*/public static String readTxtFile(File fileName) throws IOException {String result = null;FileReader fileReader = null;BufferedReader bufferedReader = null;fileReader = new FileReader(fileName);InputStreamReader isr = new InputStreamReader(new FileInputStream(fileName), "UTF-8");BufferedReader bufferedReader1 = new BufferedReader(isr);String read = null;int count = 0;while ((read = bufferedReader1.readLine()) != null) {result = read + "\r\n";count++;}if (bufferedReader != null) {bufferedReader.close();}if (fileReader != null) {fileReader.close();}return result;}/*** @throws UnsupportedEncodingException* @throws IOException* @description 写⽂件*/public static boolean writeTxtFile(String content, File fileName) throws UnsupportedEncodingException, IOException { FileOutputStream o = null;o = new FileOutputStream(fileName);o.write(content.getBytes("UTF-8"));o.close();return true;}private static void doWrite(String ip, String user, String pwd, String port, String privateKeyPath, String passphrase, String sourcePath, String destinationPath) {if (ip != null && !ip.equals("") && user != null && !user.equals("") && port != null && !port.equals("") && sourcePath != null &&!sourcePath.equals("") && destinationPath != null && !destinationPath.equals("")) {if (privateKeyPath != null && !privateKeyPath.equals("")) {sshSftp2(ip, user, Integer.parseInt(port), privateKeyPath,passphrase, sourcePath, destinationPath);} else if (pwd != null && !pwd.equals("")) {sshSftp(ip, user, pwd, Integer.parseInt(port), sourcePath,destinationPath);} else {Console console = System.console();System.out.print("Enter password:");char[] readPassword = console.readPassword();sshSftp(ip, user, new String(readPassword),Integer.parseInt(port), sourcePath, destinationPath);}} else {System.out.println("请先设置配置⽂件");}}/*** 密码⽅式登录** @param ip* @param user* @param psw* @param port* @param sPath* @param dPath*/private static void sshSftp(String ip, String user, String psw, int port, String sPath, String dPath) {System.out.println("password login");Session session = null;JSch jsch = new JSch();try {if (port <= 0) {// 连接服务器,采⽤默认端⼝session = jsch.getSession(user, ip);} else {// 采⽤指定的端⼝连接服务器session = jsch.getSession(user, ip, port);}// 如果服务器连接不上,则抛出异常if (session == null) {throw new Exception("session is null");}// 设置登陆主机的密码session.setPassword(psw);// 设置密码// 设置第⼀次登陆的时候提⽰,可选值:(ask | yes | no) session.setConfig("StrictHostKeyChecking", "no");// 设置登陆超时时间session.connect(300000);UpLoadFile.upLoadFile(session, sPath, dPath);//DownLoadFile.downLoadFile(session, sPath, dPath);} catch (Exception e) {e.printStackTrace();}System.out.println("success");}/*** 密匙⽅式登录** @param ip* @param user* @param port* @param privateKey* @param passphrase* @param sPath* @param dPath*/private static void sshSftp2(String ip, String user, int port,String privateKey, String passphrase, String sPath, String dPath) { System.out.println("privateKey login");Session session = null;JSch jsch = new JSch();try {// 设置密钥和密码// ⽀持密钥的⽅式登陆,只需在jsch.getSession之前设置⼀下密钥的相关信息就可以了if (privateKey != null && !"".equals(privateKey)) {if (passphrase != null && "".equals(passphrase)) {// 设置带⼝令的密钥jsch.addIdentity(privateKey, passphrase);} else {// 设置不带⼝令的密钥jsch.addIdentity(privateKey);}}if (port <= 0) {// 连接服务器,采⽤默认端⼝session = jsch.getSession(user, ip);} else {// 采⽤指定的端⼝连接服务器session = jsch.getSession(user, ip, port);}// 如果服务器连接不上,则抛出异常if (session == null) {throw new Exception("session is null");}// 设置第⼀次登陆的时候提⽰,可选值:(ask | yes | no)session.setConfig("StrictHostKeyChecking", "no");// 设置登陆超时时间session.connect(300000);UpLoadFile.upLoadFile(session, sPath, dPath);System.out.println("success");} catch (Exception e) {e.printStackTrace();}}/*** 读取远程⽂件到本地*/private static void readConnect() {Connection conn = new Connection(Config.hostname, Config.port);ch.ethz.ssh2.Session ssh = null;try {//连接到主机conn.connect();//使⽤⽤户名和密码校验boolean isconn = conn.authenticateWithPassword(ername, Config.password); if (!isconn) {System.out.println("⽤户名称或者是密码不正确");} else {System.out.println("已经连接OK");File folder = new File(Config.writePath);if (!folder.exists()) {folder.mkdir();}SCPClient clt = conn.createSCPClient();ssh = conn.openSession();ssh.execCommand("find /app/s3-configuration/ -name '*.json'");InputStream is = new StreamGobbler(ssh.getStdout());BufferedReader brs = new BufferedReader(new InputStreamReader(is));while (true) {String line = brs.readLine();if (line == null) {break;}clt.get(line, Config.writePath);List<File> lf = new ArrayList<File>();lf = getFileList(new File(Config.writePath), "json");for (File f : lf) {/*System.out.println(f.getPath());*/String path = f.getPath();File file = new File(path);try {FileReader fr = new FileReader(file);BufferedReader br = new BufferedReader(fr);String s = null;Pattern p = pile(".*?error.*?");while ((s = br.readLine()) != null) {Matcher m = p.matcher(s);if (m.find()) {/*System.out.println(m.matches());*/System.out.println(line);System.out.println("find error!");}/*else{System.out.println("no error");} */}br.close();} catch (FileNotFoundException e) {System.err.println("file not found");} catch (IOException e) {e.printStackTrace();}}System.out.println("⽂件输出成功,请在" + Config.writePath + "中查看");}}} catch (IOException e) {System.out.println(e.getMessage());e.printStackTrace();} finally {//连接的Session和Connection对象都需要关闭if (ssh != null) {ssh.close();}if (conn != null) {conn.close();}}}private static List<File> getFileList(File fileDir, String fileType) {List<File> lfile = new ArrayList<File>();File[] fs = fileDir.listFiles();for (File f : fs) {if (f.isFile()) {if (fileType.equals(f.getName().substring(f.getName().lastIndexOf(".") + 1, f.getName().length()))) lfile.add(f);} else {List<File> ftemps = getFileList(f, fileType);lfile.addAll(ftemps);}}return lfile;}}package com.maxd.upload;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Scanner;import com.jcraft.jsch.Channel;import com.jcraft.jsch.ChannelSftp;import com.jcraft.jsch.Session;import com.jcraft.jsch.SftpException;public class UpLoadFile {public static void upLoadFile(Session session, String sPath, String dPath) { Channel channel = null;try {channel = (Channel) session.openChannel("sftp");channel.connect(10000000);ChannelSftp sftp = (ChannelSftp) channel;try {//上传sftp.cd(dPath);Scanner scanner = new Scanner(System.in);/* System.out.println(dPath + ":此⽬录已存在,⽂件可能会被覆盖!是否继续y/n?"); String next = scanner.next();if (!next.toLowerCase().equals("y")) {return;}*/} catch (SftpException e) {sftp.mkdir(dPath);sftp.cd(dPath);}File file = new File(sPath);copyFile(sftp, file, sftp.pwd());} catch (Exception e) {e.printStackTrace();} finally {session.disconnect();channel.disconnect();}}public static void copyFile(ChannelSftp sftp, File file, String pwd) {if (file.isDirectory()) {File[] list = file.listFiles();try {try {String fileName = file.getName();sftp.cd(pwd);System.out.println("正在创建⽬录:" + sftp.pwd() + "/" + fileName);sftp.mkdir(fileName);System.out.println("⽬录创建成功:" + sftp.pwd() + "/" + fileName);} catch (Exception e) {// TODO: handle exception}pwd = pwd + "/" + file.getName();try {sftp.cd(file.getName());} catch (SftpException e) {// TODO: handle exceptione.printStackTrace();}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}for (int i = 0; i < list.length; i++) {copyFile(sftp, list[i], pwd);}} else {try {sftp.cd(pwd);} catch (SftpException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}System.out.println("正在复制⽂件:" + file.getAbsolutePath());InputStream instream = null;OutputStream outstream = null;try {outstream = sftp.put(file.getName());instream = new FileInputStream(file);byte b[] = new byte[1024];int n;try {while ((n = instream.read(b)) != -1) {outstream.write(b, 0, n);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (SftpException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {outstream.flush();outstream.close();instream.close();} catch (Exception e2) {// TODO: handle exceptione2.printStackTrace();}}}}}⽂件地址。

java web 实验报告

java web 实验报告

java web 实验报告《Java Web 实验报告》一、实验目的本次实验旨在通过学习和实践,掌握Java Web开发的基本原理和技术,包括Servlet、JSP、Tomcat等内容。

通过实验,深入理解Java Web的工作原理和应用场景,为今后的实际项目开发奠定基础。

二、实验内容1. Servlet的基本原理和用法2. JSP页面的创建和使用3. Tomcat服务器的搭建和部署4. Java Web开发的常见问题和解决方法三、实验过程1. 首先,我们学习了Servlet的基本概念和用法,包括如何创建一个Servlet类、如何处理HTTP请求和响应等内容。

通过编写简单的Servlet程序,加深了对Servlet的理解。

2. 接着,我们学习了JSP的基本语法和用法,包括如何创建一个JSP页面、如何使用JSP标签等内容。

通过编写简单的JSP页面,加深了对JSP的理解。

3. 然后,我们学习了Tomcat服务器的搭建和部署方法,包括如何下载和安装Tomcat、如何配置Tomcat服务器等内容。

通过部署自己编写的Servlet和JSP程序,加深了对Tomcat服务器的理解。

4. 最后,我们学习了Java Web开发中常见的问题和解决方法,包括如何处理乱码问题、如何处理表单提交等内容。

通过实际调试和解决问题,加深了对JavaWeb开发的理解。

四、实验结果通过本次实验,我们成功掌握了Java Web开发的基本原理和技术,包括Servlet、JSP、Tomcat等内容。

我们能够编写简单的Java Web程序,并且能够部署到Tomcat服务器上进行访问。

同时,我们也学会了如何解决Java Web开发中常见的问题,为今后的实际项目开发积累了经验。

五、实验总结本次实验是一次非常有意义的学习和实践过程。

通过实验,我们不仅加深了对Java Web开发的理解,还提升了自己的实际操作能力。

同时,我们也意识到Java Web开发是一项非常重要的技能,对于今后的职业发展有着重要的意义。

java程序读取服务器端数据文件的方法

java程序读取服务器端数据文件的方法

java程序读取服务器端数据文件的方法随着计算机网络技术和网络通信技术的发展,越来越多的程序需要从服务器端读取数据文件。

在服务器应用领域,Java语言拥有广泛的应用,也需要从服务器端读取数据文件。

因此,本文将介绍Java 语言如何从服务器端读取数据文件。

首先,要从服务器端读取数据文件,需要建立与服务器的连接。

Java语言中提供了Socket类,可以用来连接服务器,并且维持连接。

使用Socket类可以很容易地建立和服务器的连接,从而实现从服务器读取数据文件的功能。

其次,在Java语言中,可以使用InputStream类来读取服务器端数据文件。

InputStream是一个抽象类,它定义了一系列用于从InputStream读取数据的方法,例如read()方法。

它可以读取从服务器端传输来的数据文件,并将文件的内容按照字节的形式存储在缓冲区中。

此外,在Java语言中,还可以使用BufferedReader来读取服务器端的数据文件。

BufferedReader拥有两个参数,其中第一个参数是InputStream,另一个参数是缓冲区大小。

当使用BufferedReader 读取服务器端的数据文件时,可以指定缓冲区的大小,以提高读取的效率。

最后,Java还提供了FileInputStream类,允许用户从服务器端读取数据文件。

FileInputStream类允许用户使用文件路径直接访问数据文件,从而减少网络通信所耗费的时间。

综上所述,Java语言提供了多种实现从服务器端读取数据文件的方法。

使用Socket类可以方便快捷地建立与服务器的连接。

在Java 语言中,可以使用InputStream类读取服务器端数据文件,并使用BufferedReader类读取数据文件,以提高读取的效率。

此外,Java 还提供了FileInputStream类,提高了数据文件访问的效率。

本文介绍了Java语言从服务器端读取数据文件的方法,希望对读者有所帮助。

《JAVA程序设计实施方案》实验报告

《JAVA程序设计实施方案》实验报告

福建师范大学协和学院本科实验报告课程名称:JA V A程序设计系别:专业:班级:学号:学生姓名:2011年月日实验项目列表《JA V A程序设计》实验相关说明实验要求:1.明确实验课是课程地重要组成部分,与理论课有着同等地位,是培养自身地实验技能与创新能力地重要途径;2.在实验课前,对实验地目地、要求和基本内容,实验地重点和难点,应进行预习与讨论,确定实施措施,并编写好程序;3.了解实验室地规章制度和安全用电常识、实验设备损坏赔偿制度等,加强安全意识,爱惜实验设备;4.实验课期间不得擅自离开实验室或从事与本实验无关地活动,按时按质完成实验作业,培养创造性思维,努力提高自身地实践能力;5.每次实验应提交实验结果,指导老师将结合实验操作过程给予综合评分(对于有创造性地实验成果酌情给予加分),作为期末考试成绩地一部分.实验须知:1.每次实验完成之后,学生须填写实验报告,并上交.报告内容包括:实验目地、实验内容、实验步骤、思路分析或流程图、程序源代码、实验中未解决地问题、屏幕出错提示代码、出错原因、解决方法及实验心得等内容.不交实验报告地学生,本次实验成绩为0分.2.若有拷贝现象,程序代码雷同地学生实验成绩一律为0分.3.每次实验任务必须在2-6节课内完成,并经过实验指导老师检查才能得分.没能按时完成地同学,本次实验成绩为0分.福建师范大学协和学院《JA V A程序设计》课程实验报告班级:______学号:_________________姓名:_____________成绩:教师签字:jLBHr。

实验一简单输入/输出项目设计一、实验目地1、了解Java运行环境地安装与配置.2、了解程序地基本结构,编辑、编译与运行方法.3、掌握方法地调用、异常地处理.二、实验环境(主要仪器设备和软件)1、操作系统Windows XP2、JA V A开发包JSDK1.63、代码编辑器Jcreart3.24、数据库管理系统MySQL5.05、数据库可视化管理平台CapVideo8.06、Web服务器TomCat5.07、JA V A开发工具MyEclipse7.08、微机三、实验内容1、Java开发包地下载与安装;2、环境变量地设置;3、安装配套开发软件;4、熟悉各类软件地使用;5、以下内容至少任选一项完成:选项一:编写一个应用程序绘制一个如下地操作菜单.1. 增加1个学生2. 显示所有学生3. 退出程序请输入选择(1-3):选项二:编写星期计算器.要求根据已知地日期和星期,对新输入地日期进行计算,输出相应地星期几.选项三:编写程序,用于输入“yyyy-MM-dd”格式地日期,并对日期地合法性作出判断.四、思路分析与程序代码(含程序功能、设计思路、算法设计或程序流程图,以及程序代码)五、实验效果(含程序运行主要截图)六、思考题1、列举JA V A程序与其他程序(如C语言程序)地主要异同点.2、JA V A程序如何实现可移植性地?福建师范大学协和学院《JA V A程序设计》课程实验报告班级:______学号:_______________姓名:_____________成绩:教师签字:xHAQX。

JAVA实验报告1-窗体界面程序设计

JAVA实验报告1-窗体界面程序设计

JAVA实验(1)课程名称: Java 面向对象程序设计学院:管理学院专业班级:信息管理与信息系统(6)班学号: 3108006406姓名:张钟权任课教师:聂小东2010年05月01日管理学院信息管理与信息系统专业08信管6班______组学号3108006406姓名张钟权协作者教师评定_____________ 实验题目窗体界面程序设计一、实验目的与要求(1)实验目的:训练对Java开发工具的安装和环境配置,并能在指定的窗口界面完成程序的编写和调试工作。

(2)实验要求:按照Java程序设计教程的要求完成第一章中第1、2、3 节程序的编写和调试。

二、实验方案(1)界面布局:I、主界面程序类TextFindReplace,实现了MouseListener和WindowsListener接口:①Creat()方法:创建主界面,安排查找与替换信息的对话框;②mouseClicked()方法:处理鼠标单击事件。

II、查找和替换字符串算法类matchFun:①strFind()方法:实现字符串查找功能,返回匹配的次数;②strReplace()方法:实现字符串替换功能,返回替换的次数。

III、查找字符串的核心算法,用到了String类的两个方法:①getCaretPosition()方法:得到当前光标位置,即开始比较的位置;②CharAt(int index)方法:得到当前字符串index位置上的一个字符。

IV、替换字符串的核心算法,重复前面的查找过程,找到要替换字符的位置,然后将要替换的主字符串转换为StringBuffer类型,再利用StringBuffer类的replace(int i,int j,String str)方法,从主串的第i位开始替换,共替换掉j个字符,用字符str替换。

(2)程序启动界面:I、定义了一个JSplashWindow类,其父类为JWindow,实现了接Runnable接口:①JSplashWindow()方法②start()方法③run()方法④showFrame()方法(3)树形分层结构:A、最简单的树形结构:I、定义了一个TreeDemoFrame类,其父类为JFrame:①TreeDemoFrame()方法:该方法中调用了默认的树形结构。

java实验2

java实验2

实验课程:java语言程序设计实验名称:客户端与服务端的简单通信日期:2013-6-5实验目的和要求:1 程序包含客户端和服务端。

2 客户端要能与服务端建立连接。

2 掌握套接字读取服务器端对象的使用方法。

3 掌握BufferedReader和BufferedWriter的使用方法。

实验内容:(1)基于TCP的聊天例程——客户端程序部分。

(2)服务端程序部分。

实验步骤:// //////////////////////////////////////////////////////////// J_ChatClient.java//// ////////////////////////////////////////////////////////// 简介:// 基于TCP的聊天例程——客户端程序部分。

//// ////////////////////////////////////////////////////////import java.awt.BorderLayout;import java.awt.Container;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import .Socket;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import javax.swing.JFrame;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.JScrollPane;public class J_ChatClient extends JFrame{private ObjectInputStream m_input; // 输入流private ObjectOutputStream m_output; // 输出流private JTextField m_enter; // 输入区域private JTextArea m_display; // 显示区域public J_ChatClient( ) // 在图形界面中添加组件{super("聊天程序客户端");Container c = getContentPane( );m_enter = new JTextField( );m_enter.setEnabled( false );m_enter.addActionListener(new ActionListener( ){public void actionPerformed( ActionEvent event ){ // 向服务器端发送数据try{String s = event.getActionCommand( );m_output.writeObject( s );m_output.flush( );mb_displayAppend( "客户端: " + s );m_enter.setText( "" ); // 清除输入区域的原有内容}catch (Exception e){System.err.println("发生异常:" + e);e.printStackTrace( );} // try-catch结构结束} // 方法actionPerformed结束} // 实现接口ActionListener的内部类结束); // addActionListener方法调用结束c.add( m_enter, BorderLayout.NORTH );m_display = new JTextArea( );c.add( new JScrollPane( m_display ), BorderLayout.CENTER );} // J_ChatClient构造方法结束public void mb_displayAppend( String s ){m_display.append( s + "\n" );m_display.setCaretPosition( m_display.getText( ).length( ) );m_enter.requestFocusInWindow( ); // 转移输入焦点到输入区域} // 方法mb_displayAppend结束public boolean mb_isEndSession( String m ){if (m.equalsIgnoreCase("q"))return(true);if (m.equalsIgnoreCase("quit"))return(true);if (m.equalsIgnoreCase("exit"))return(true);if (m.equalsIgnoreCase("end"))return(true);if (m.equalsIgnoreCase("结束"))return(true);return(false);} // 方法mb_isEndSession结束public void mb_run( String host, int port){try{mb_displayAppend("尝试连接");Socket s = new Socket(host, port);String m; // 来自服务器端的消息m_output = new ObjectOutputStream( s.getOutputStream( ) );m_input = new ObjectInputStream( s.getInputStream( ) );m_enter.setEnabled( true );do{m = (String) m_input.readObject( );mb_displayAppend("服务器端: " + m);} while(!mb_isEndSession( m ));// do-while循环结束m_output.writeObject("q"); // 通知服务器端退出程序m_output.flush( );m_output.close( );m_input.close( );s.close( );System.exit( 0 );}catch (Exception e){System.err.println("发生异常:" + e);e.printStackTrace( );mb_displayAppend("发生异常");} // try-catch结构结束} // 方法mb_run结束public static void main(String args[ ]){J_ChatClient app = new J_ChatClient( );app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);app.setSize(350, 150);app.setVisible(true);if ( args.length == 0 )app.mb_run("localhost", 5000);else app.mb_run(args[0], 5000);} // 方法main结束} // 类J_ChatClient结束// //////////////////////////////////////////////////////////// J_ChatServer.java//// ////////////////////////////////////////////////////////import java.awt.BorderLayout;import java.awt.Container;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import .ServerSocket;import .Socket;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import javax.swing.JFrame;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.JScrollPane;public class J_ChatServer extends JFrame{private ObjectInputStream m_input; // 输入流private ObjectOutputStream m_output; // 输出流private JTextField m_enter; // 输入区域private JTextArea m_display; // 显示区域private int m_clientNumber = 0; // 连接的客户数public J_ChatServer( ) // 在图形界面中添加组件{super("聊天程序服务器端");Container c = getContentPane( );m_enter = new JTextField( );m_enter.setEnabled( false );m_enter.addActionListener(new ActionListener( ){public void actionPerformed( ActionEvent event ){ // 向客户端发送数据try{String s = event.getActionCommand( );m_output.writeObject( s );m_output.flush( );mb_displayAppend( "服务器端: " + s );m_enter.setText( "" ); // 清除输入区域的原有内容}catch (Exception e){System.err.println("发生异常:" + e);e.printStackTrace( );} // try-catch结构结束} // 方法actionPerformed结束} // 实现接口ActionListener的内部类结束); // addActionListener方法调用结束c.add( m_enter, BorderLayout.NORTH );m_display = new JTextArea( );c.add( new JScrollPane( m_display ), BorderLayout.CENTER );} // J_ChatServer构造方法结束public void mb_displayAppend( String s ){m_display.append( s + "\n" );m_display.setCaretPosition( m_display.getText( ).length( ) );m_enter.requestFocusInWindow( ); // 转移输入焦点到输入区域} // 方法mb_displayAppend结束public boolean mb_isEndSession( String m ){if (m.equalsIgnoreCase("q"))return(true);if (m.equalsIgnoreCase("quit"))return(true);if (m.equalsIgnoreCase("exit"))return(true);if (m.equalsIgnoreCase("end"))return(true);if (m.equalsIgnoreCase("结束"))return(true);return(false);} // 方法mb_isEndSession结束public void mb_run( ){try{ServerSocket server = new ServerSocket(5000);String m; // 来自客户端的消息while (true){m_clientNumber++;mb_displayAppend("等待连接[" + m_clientNumber + "]");Socket s = server.accept( );mb_displayAppend("接收到客户端连接[" + m_clientNumber + "]");m_output = new ObjectOutputStream( s.getOutputStream( ) );m_input = new ObjectInputStream( s.getInputStream( ) );m_output.writeObject("连接成功");m_output.flush( );m_enter.setEnabled( true );do{m = (String) m_input.readObject( );mb_displayAppend("客户端: " + m);} while(!mb_isEndSession( m ));// do-while循环结束m_output.writeObject("q"); // 通知客户端退出程序m_output.flush( );m_enter.setEnabled( false );m_output.close( );m_input.close( );s.close( );mb_displayAppend("连接[" + m_clientNumber + "]结束");} // while循环结束}catch (Exception e){System.err.println("发生异常:" + e);e.printStackTrace( );mb_displayAppend("连接[" + m_clientNumber + "]发生异常");} // try-catch结构结束} // 方法mb_run结束public static void main(String args[ ]){J_ChatServer app = new J_ChatServer( );app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);app.setSize(350, 150);app.setVisible(true);app.mb_run( );} // 方法main结束} // 类J_ChatServer结束实验结论:。

java读取FTP服务器文件

java读取FTP服务器文件

java读取FTP服务器文件java学习=====* java 读取服务器文件内容=====* 适用于web服务器和liunx系统环境下=====* 代码FtpClient ftpClient;private String server = "192.168.1.100"; private int port = 21;private String userName = "econsys";private String userPassword = "yc1234";/*** 链接到服务器** @return*/public boolean open(){if (ftpClient != null && ftpClient.serverIsOpen()) return true;try {ftpClient = new FtpClient();ftpClient.openServer(server);ftpClient.login(userName, userPassword); ftpClient.binary();return true;}catch (Exception e) {e.printStackTrace();ftpClient = null;return false;}}/*** 从FTP服务器上下载文件并返回下载文件长度** @param ftpDirectoryAndFileName:FTP服务器路径* @param localDirectoryAndFileName:下载文件后保存的路径* @return* @throws Exception*/public long download(String ftpDirectoryAndFileName,String localDirectoryAndFileName) throws Exception{long result = 0;if (!open())return result;TelnetInputStream is = null;FileOutputStream os = null;try {is = ftpClient.get(ftpDirectoryAndFileName);java.io.File outfile = new java.io.File(localDirectoryAndFileName);os = new FileOutputStream(outfile);byte[] bytes = new byte[1024];//读取内容后再写入指定路径下的文件中int c;while ((c = is.read(bytes)) != -1) {os.write(bytes, 0, c);result = result + c;}}catch (Exception e) {throw e;}finally{if (is != null)is.close();if (os != null)os.close();}return result;}测试public static void main(String[] args) throws Exception{demo t=new demo();longstr=t.download("//home//econsys//dat//comtrade//test.txt", "E:\\\\excel\\\est.txt");}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验3 读取服务端的窗口
1.相关知识点
网络套接字是基于TCP协议的有连接通信,套接字连接就是客户端的套接字和服务器端的套接字对象通过输入输出流连接在一起。

服务器建立ServerSocket对象,ServerSocket对象负责等待客户端请求建立套接字连接,而客户端建立Socket对象向服务器端发出套接字请求。

可以使用Socket类不带参数的构造方法
public Socket()
创建一个套接字对象,该对象不请求任何连接。

该对象再调用
public void connect(SocketAddress endpoint) throws IOException
请求和参数SocketAddress指定地址的套接字建立连接。

为了使用connect方法,可以使用SocketAddress的子类:InetSocketAddress创建一个对象,InetSocketAddress的构造方法是:
public InetSocketAddress(InetAddress addr,int port)
2.实验目的
学会使用套接字读取服务器端的对象。

3.实验要求
客户端利用套接字连接将服务器端的JFrame对象读取到客户端。

首先将服务器端的程序编译通过,并运行起来,等待请求套接字连接。

4.程序模板
//客户端模板client.java
import java.io.*;
import .*;
import java.util.*;
public class Client {
public static void main(String[] args) {
Scanner scanner =new Scanner (System. in);
Socket mysocket=null;
ObjectInputStream inObject=null;
ObjectOutputStream outObject=null;
Thread thread;
ReadWindow readWindow=null;
try{ mysocket=new Socket();
readWindow=new ReadWindow();
thread=new Thread(readWindow);
System.out.print("输入服务器的IP:");
String IP=scanner.nextLine();
System.out.print("输入端口号:");
int port=scanner.nextInt();
if(mysocket.isConnected()){}
else{
InetAddress address=InetAddress.getByName(IP); InetSocketAddress socketAddress=new InetSocketAddress(address,port);
mysocket.connect(socketAddress);
InputStream in=mysocket.getInputStream();
OutputStream out=mysocket.getOutputStream();
inObject=new ObjectInputStream(in);
outObject=new ObjectOutputStream(out);
readWindow.setObjectInputStream(inObject);
thread.start();
}
}
catch(Exception e){
S ystem.out.println("服务器已断开"+e);
}
}
}
class ReadWindow implements Runnable{
ObjectInputStream in;
public void setObjectInputStream(ObjectInputStream in){ this.in=in;
}
public void run(){
double result=0;
while(true){
try{
javax.swing.JFrame
window=(javax.swing.JFrame)in.readObject();
window.setTitle("这是从服务器上读取的窗口");
window.setVisible(true);
window.requestFocusInWindow();
window.setSize(600,800);
}
catch(Exception e){
System.out.println("与服务器已断开"+e);
break;
}
}
}
}
import java.io.*;
import .*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
public class Server {
public static void main(String[] args) {
ServerSocket server=null;
ServerThread thread;
Socket you=null;
while(true){
try{server=new ServerSocket(4331);
}
catch(IOException e1){
System.out.println("正在监听");
}
try{you=server.accept();
System.out.println("客户的地址:"+you.getInetAddress());
}
catch(IOException e){
System.out.println("正在等待客户");
}
if(you!=null){
new ServerThread(you).start();
}
}
}
}
class ServerThread extends Thread{
Socket socket;
ObjectInputStream in=null;
ObjectOutputStream out=null;
JFrame window;
JTextArea text;
ServerThread(Socket t){
socket=t;
try{out=new ObjectOutputStream(socket.getOutputStream());
in=new ObjectInputStream(socket.getInputStream());
}
catch(IOException e){}
window=new JFrame();
text=new JTextArea();
for(int i=1;i<+20;i++){
text.append("你好,我是服务器上的文本区组件\n");
}
text.setBackground(Color.yellow);
window.add(text);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void run(){
try{out.writeObject(window);
}
catch(IOException e){
System.out.println("客户离开");
}
}
}
运行结果如下:
(1)客户端:
(2)服务器端:。

相关文档
最新文档