问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用Java编写创建一对客户端/服务器程序,利用数据报将一个文件从一台主机传送到另一

发布网友 发布时间:2022-04-26 10:19

我来回答

1个回答

热心网友 时间:2023-10-09 08:32

下面是我自己写的一个读取并显示txt文件的demo,希望对您有帮助。
public class Client {
public static void main(String[] args) {
ClientFrame f = new ClientFrame();
}
}

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class ClientFrame extends JFrame implements ActionListener, ListSelectionListener{
private JList list = null;
private JButton sbtn = null;
private JButton cbtn = null;
private Vector v = null;
private JTextArea txt = null;
private Container control = null;
private Container btn = null;
private Socket client = null;
private DataInputStream reader = null;
private DataOutputStream writer = null;

public ClientFrame(){
this.list = new JList();
this.list.setBorder(BorderFactory.createTitledBorder("文件列表"));
this.list.addListSelectionListener(this);

this.sbtn = new JButton("显示");
this.sbtn.addActionListener(this);
this.cbtn = new JButton("清除");
this.cbtn.addActionListener(this);

this.control = new Container();
this.control.setPreferredSize(new Dimension(150, 400));
this.control.setLayout(new BorderLayout());
this.control.add(new JScrollPane(this.list),BorderLayout.CENTER);
this.btn = new Container();
this.btn.setLayout(new GridLayout(1,2));
btn.add(sbtn);
btn.add(cbtn);
this.control.add(this.btn,BorderLayout.SOUTH);

this.txt = new JTextArea();
this.txt.setEditable(false);
this.txt.setSize(350, 400);

this.setTitle("客户端");
this.setSize(500, 400);
this.setVisible(true);
Dimension displaySize = Toolkit.getDefaultToolkit().getScreenSize(); 
this.setLocation((displaySize.width - this.getWidth()) / 2, (displaySize.height - this.getHeight()) / 2);
this.setLayout(new BorderLayout());
this.add(this.control,BorderLayout.WEST);
this.add(new JScrollPane(this.txt),BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

try {
//this.client = new Socket("192.168.32.34",6666);
this.client = new Socket("192.168.1.100",6666);
this.reader = new DataInputStream(client.getInputStream());
this.writer = new DataOutputStream(client.getOutputStream());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public void actionPerformed(ActionEvent event){
 if(event.getSource() == sbtn){
 if(v == null){
 v = new Vector();
 }
 else{
 v.clear();
 }
 
 try { 
 writer.writeUTF("getfilelist");
 writer.flush();
 String t = reader.readUTF();
 while( t != null && !t.equals("")){
 v.add(t);
 t = reader.readUTF();
 }
 } catch (UnknownHostException e) {
 e.printStackTrace();
 } catch (IOException e) {
 e.printStackTrace();
 }
 this.list.setListData(v);
 }
 
 if(event.getSource() == cbtn){
 this.txt.setText("");
 }
 }

public void valueChanged(ListSelectionEvent e) {
int i = this.list.getSelectedIndex(); 
if (! this.list.getValueIsAdjusting() && i != -1) {
try {
writer.writeUTF("getfilecontent_" + i);
writer.flush();
String tmp = reader.readUTF();
this.txt.setText(tmp);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}

}

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Iterator;

public class Server {
static ArrayList<File> fileArray = new ArrayList<File>();
public static void main(String args[]) {
ServerSocket server = null;
Socket client = null;
String cmd = "";
try {
server = new ServerSocket(6666);
client = server.accept();

DataInputStream reader = new DataInputStream(client.getInputStream());
DataOutputStream writer = new DataOutputStream(client.getOutputStream());

while(true){
cmd = reader.readUTF();
System.out.println(cmd);
if(cmd.equals("getfilelist")){
fileArray.clear();
//fileArray = getFile(new File("D:/tmp"));
fileArray = getFile(new File("D:/学习/教程/学习笔记"));
String fn = "";
for(int k = 0; k < fileArray.size(); k ++){
fn = fileArray.get(k).getName();
writer.writeUTF(fn);
writer.flush();
}
writer.writeUTF("");
}
if(cmd.startsWith("getfilecontent_")){
int i = Integer.parseInt(cmd.split("_")[1]);
File f = fileArray.get(i);
Reader in = new InputStreamReader(new FileInputStream(f));
int tempbyte;
String str = "";
            while ((tempbyte = in.read()) != -1) {
            str += (char)tempbyte;
            //System.out.println(str);
            }
            in.close();
                writer.writeUTF(str);
}
}

} catch (IOException e) {
e.printStackTrace();
}
}

private static ArrayList<File> getFile(File f) {
File[] ff = f.listFiles();
for (File child : ff) {
if (child.isDirectory()) {
getFile(child);
} else {
fileArray.add(child);
}
}
return fileArray;
}
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我用无线数传模块PTR6000做实验 接收不到数据包 很急啊 祈求高人指导帮 ... Lora无线传输协议技术浅析 南昌定购433M无线通讯模块 福州433m无线模块订购 联想电脑系统重装后怎么连网线电脑做完系统怎么网络连接 电脑重装了系统还是连接不到wifi为什么电脑重装系统后不能连接wifi 笔记本电脑新装系统后连不上wifi为什么电脑重装系统后不能连接wifi 笔记本电脑装系统后无法连接wifi为什么笔记本电脑wifi连接不上 电脑重装系统后搜不到无线网了为什么笔记本电脑重装了系统之后就连不... 求问~怎样区分2018款君越是不是库存车? 培训了一个月java,可以写出一个服务端客户端聊天吗 java 打包成客户端 编写java程序实现客户端和服务端的通信 求用java写一个ftp服务器客户端程序。 Java 编程 怎么做成客户端? webservice中怎样用java写客户端程序() java适合做桌面客户端吗 华为nova2 plus怎么设置返回? 怎么用java编写简单客户端程序 KG316T微电脑时控开关调试方法? kg316t微电脑时控开关怎么设置电源怎么连接 kg316t微电脑时控开关如何调时间? 上海华琪KG316T微电脑时控开关说明书的内容是什么? 学习其实很简单读后感 关于学习方面 世界上有学问的人为什么这么多呢?学习真的很简单吗?为什么我学不好呢? 学习其实很简单这本书的读后感 《原来学习可以这么简单》作文 学习其实很简单的读后感!!!急!!!解出一定采纳 《学习其实......》作文 python服务端已写,对应怎么写java客户端 java 编写客户端 获取图片 用java写一个客户端,向本机中发送snmp命令,拿到snmp服务器返回的结果? 电脑administrator启动密码忘记了怎么办 Java怎样把文件写入到客户端的硬盘上 甲鱼属于寒性食物吗 甲鱼属于寒性吗 甲鱼属凉性还是热性 甲鱼是普遍的一种食材,什么体质的人不适合吃甲鱼? 甲鱼是不是凉性的 甲鱼汤是寒性还是热性? 甲鱼杀了放冷冻保存几天? 甲鱼属于寒性食物么 老鳖汤是热性还是凉性? 为什么女孩子不能吃甲鱼? 甲鱼杀后能冷冻多久 甲鱼肚子里面有那些白色的块状物是什么 梦见儿子的学习下降了是什么预兆? 梦见孩子考学不顺利 m.sosuo.name 梦见儿子上学不争气