有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在客户端GUI的JTextArea上显示服务器目录中的数据

我得到了一个小项目,将文件从服务器传输到客户端,该项目按以下顺序执行

  • 服务器设置特定目录并连接到客户端
  • 客户端连接到服务器并扫描该目录
  • 服务器扫描目录中的所有文件都显示在客户端GUI的文本区域中
  • 客户端选择文件号,文件从服务器传输到客户端,并存储在客户端的特定目标目录(td)中

现在,我有了服务器客户端的代码,它们工作得很好,但我对JFrames一无所知。我一直在网上搜索并编写代码。 现在的问题是——我希望当我单击客户端GUI上的扫描按钮时,客户端应该连接到服务器,然后扫描特定的服务器目录(由服务器设置),并在客户端GUI的JTextArea中显示文件

这是我的客户代码:

package FTPClient;

import java.io.*;
import java.net.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;


public class clientframe extends javax.swing.JFrame {
String ip="",td=""; private Socket s;
    /** Creates new form clientframe */
    public clientframe() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

    jLabel2 = new javax.swing.JLabel();
    jTextField1 = new javax.swing.JTextField();
    jLabel3 = new javax.swing.JLabel();
    jTextField2 = new javax.swing.JTextField();
    jLabel4 = new javax.swing.JLabel();
    jLabel5 = new javax.swing.JLabel();
    jTextField3 = new javax.swing.JTextField();
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jScrollPane1 = new javax.swing.JScrollPane();
    jTextArea1 = new javax.swing.JTextArea();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jLabel2.setText(" SERVER IP ADDRESS");

    jTextField1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jTextField1ActionPerformed(evt);
        }
    });

    jLabel3.setText(" TARGET DIRECTORY");

    jTextField2.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jTextField2ActionPerformed(evt);
        }
    });

    jLabel4.setText(" FILES FOUND");

    jLabel5.setText("ENTER FILE NO. TO BE REQUESTED");

    jButton1.setText("OK");

    jButton2.setText("SCAN");
    jButton2.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton2ActionPerformed(evt);
        }
    });

    jTextArea1.setColumns(20);
    jTextArea1.setRows(5);
    jScrollPane1.setViewportView(jTextArea1);

    javax.swing.GroupLayout layout = new   javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jLabel2)
                        .addComponent(jLabel3)
                        .addComponent(jLabel4))
                    .addGap(87, 87, 87)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 237, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jButton1)
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGap(72, 72, 72)
                            .addComponent(jButton2))
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(169, 169, 169))
                .addGroup(layout.createSequentialGroup()
                    .addComponent(jLabel5)
                    .addGap(18, 18, 18)
                    .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(372, Short.MAX_VALUE))))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel2)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jButton2))
                    .addGap(32, 32, 32)
                    .addComponent(jLabel4)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 72, Short.MAX_VALUE))
                .addGroup(layout.createSequentialGroup()
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))
            .addGap(20, 20, 20)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jLabel5)
                .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addGap(33, 33, 33)
             .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                  .addGroup(layout.createSequentialGroup()
                    .addComponent(jTextField2,  javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,   javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(31, 31, 31)
                    .addComponent(jButton1))
                .addComponent(jLabel3))
            .addContainerGap())
    );

    pack();
 }// </editor-fold>

 private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
    // TODO add your handling code here:
    ip=jTextField1.getText().trim();
 }                                           

 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    try {
        s = new Socket(InetAddress.getByName(ip), 5432);
    } catch (IOException ex) {
        Logger.getLogger(clientframe.class.getName()).log(Level.SEVERE,  null, ex);
    }

  }

    private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt)    {
        // TODO add your handling code here:
        td=jTextField2.getText().trim();
    }

/**
* @param args the command line arguments
*/
public static void main(String args[]) throws IOException {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new clientframe().setVisible(true);
        }
    });
    String list[]=new String[20];
String ip="",td="";
int p=0,ch;
Socket s=new Socket(InetAddress.getByName(ip),5432);
System.out.println("CLIENT connected to SERVER at"+ s);
  DataInputStream i=new DataInputStream(s.getInputStream());
  DataOutputStream o=new DataOutputStream(s.getOutputStream());

  ch=getFile(i,o,list);

  FileOutputStream fout = new FileOutputStream(td+list[ch-1]);
 try
 {
 System.out.println("Transferring FILE: "+list[ch-1]+"\n\n");
 do
 {
 ch=i.read();
 fout.write(ch);
 }while(ch!=-1);
 }
 catch(SocketException e) //Exception indicates FILE TRANSFER complete.
 {
  System.out.println("***FILE TRANSFER COMPLETE***");
 }

  }

 public static int getFile(DataInputStream din,DataOutputStream dout,String          flist[]) throws IOException
 {
 Scanner src=new Scanner(System.in);
 int i=0,ch=0;
 System.out.println("***FILE-LIST from SERVER***\n\n");
 ch=din.read();
 for(i=0;i<ch;i++)
 {
 flist[i]=din.readUTF();
 System.out.println((i+1)+". "+flist[i]);
 }
 System.out.println("Enter File to be Requested");
 ch=src.nextInt();
 dout.writeUTF(flist[(ch-1)]);
 dout.flush();
 return (ch);
 }


 // Variables declaration - do not modify
 private javax.swing.JButton jButton1;
 private javax.swing.JButton jButton2;
 private javax.swing.JLabel jLabel2;
 private javax.swing.JLabel jLabel3;
 private javax.swing.JLabel jLabel4;
 private javax.swing.JLabel jLabel5;
 private javax.swing.JScrollPane jScrollPane1;
 private javax.swing.JTextArea jTextArea1;
 private javax.swing.JTextField jTextField1;
 private javax.swing.JTextField jTextField2;
 private javax.swing.JTextField jTextField3;
 // End of variables declaration

 }

这是我的服务器代码。它还没有GUI。目录是预设的

package teb3;

import java.io.*;
import java.net.*;


/**********************************
* Simulate FTP over TCP
*
* FTPServer.java
* *******************************/

class FTPServer
{
 public static void main(String args[])throws Exception
{
 int c;
 String s,inp;

 //CONNECTION ESTABLISHMENT PHASE

 ServerSocket ss=new ServerSocket(5432);

 System.out.println("***WAITING for SERVER***\n\n");

 Socket soc=ss.accept();

 //DATA TRANSFER PHASE

System.out.println(soc+" AND SERVER CONNECTED!!!");
DataInputStream i=new DataInputStream(soc.getInputStream());
DataOutputStream o=new DataOutputStream(soc.getOutputStream());

getFilelist(i,o);

inp=i.readUTF();  //readUTF reads in Unicode Text Format hence

FileInputStream fin = new FileInputStream("F:/COLLEGE COURSE/semester   5/BCE/"+inp);

System.out.println("GET MESSAGE RECEIVED for FILE: "+inp);
while((c=fin.read())!=-1)
{
 o.write(c);
 o.flush();
}
fin.close();
}



public static void getFilelist(DataInputStream din,DataOutputStream dout)   throws IOException
{
 int p=0;
 File folder = new File("F:/COLLEGE COURSE/semester 5/BCE/");
 File[] listOfFiles = folder.listFiles();
 for (File listOfFile : listOfFiles)

//listFiles() returns both files as well as directories so display only Files
 if (listOfFile.isFile())
{
  p++;
}
 dout.write(p);
 dout.flush();
for (File listOfFile : listOfFiles)
if (listOfFile.isFile())
{
 dout.writeUTF(listOfFile.getName());
 dout.flush();
  }
 } 
}

共 (0) 个答案