基于Java远程传输文件Tcp 详细(源码+jar+exe)

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Din = new DataInputStream(buffered);//数据输入流,用来读取
Dout = new DataOutputStream(socket.getOutputStream());//数据输出流,用来写入由数据输入流读取的数据
} catch (IOException e) {e.printStackTrace();}
chooser=new JFileChooser();
button=new JButton("发送");
button.setFont(new Font("楷体",Font.PLAIN,30));
button.setBounds(0,0,400,400);
add(button);
button.addActionListener(this);
byte[] by = new byte[100000];
int l;
while(( l =Bin.read(by))!= -1)//从输入流中将各字节读取到by数组中只要不是=-1如果=-1即到达流末尾就跳出循环
{
Dout.write(by,0,l);//将by数组中从偏移地址0开始的1个字节写入输出流。
}
public void run()
{
try
{
Dout.writeUTF(file.getName());//将文件名写入输出流
JOptionPane.showMessageDialog(null,"发送的文件是:"+file.getName());
boolean isAccepted = Din.readBoolean();//接收端是否读取输入字节
{
private JButton button;
private JFileChooser chooser;
//private FileInputStream in;
//private String filename;
//byte[] by=new byte[100000];
public TcpSend()
if(isAccepted)
{
// JOptionPane.showMessageDialog(null,"对方已经接受文件传输,点击确定开始传输!");
BufferedInputStream Bin = new BufferedInputStream(new FileInputStream(file));//创建一个缓冲区数组,保存文件输入流
{
super("小郭文件传输发送端");
this.setBounds(10,10,400,400);
this.setLayout(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
chooser.showOpenDialog(this);
if(chooser.showOpenDialog(this)==JFileChooser.CANCEL_OPTION)
{
button.setText("取消文件发送");//小bug按2次才能取消
class Send exteFra Baidu bibliotekds Thread
{
private File file;
private Socket socket;
private DataOutputStream Dout;
private DataInputStream Din;
BufferedInputStream buffered;
}//end if
}//end try
catch (IOException e)
{e.printStackTrace();}
finally//保证即使因为异常,try里面的代码不会被执行,但是finally里面的语句还是会执行,这样可以释放一些资源
{
try
{
Din.close();//关闭数据输入流
return;
}
Send send=new Send(chooser.getSelectedFile());
send.start();
button.setText("文件已发送");
}
public static void main(String[] args)
{
new TcpSend();
}
}//end TcpSend
Dout.close();//关闭数据输出流
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}//end finally
}//end run()
}//end Send(线程类)
接收端
import javax.swing.*;
import java.net.*;
Dout.flush();//清空数据输出流
//l = Bin.read(by);多了这一句照成接收的文件大小只有一半的容量
}
Bin.close();//关闭缓冲输入流
// JOptionPane.showMessageDialog(null,file.toString()+"\n文件发送完毕!");
发送端
/*2011
*by小郭
*远程文件传输
**/
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.awt.*;
import java.lang.*;
import java.awt.event.*;
public class TcpSend extends JFrame implements ActionListener
Send(File file)
{
this.file = file;
try
{
socket= new Socket("localhost",1111);//localhost可以改成IP如果是内网直接填内网IP外网的话IP要映射
buffered=new BufferedInputStream(socket.getInputStream());//创建一个缓冲区数组,保存套接字s输入流,以便使用
相关文档
最新文档