⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filesendthread.java

📁 模仿腾讯QQ的
💻 JAVA
字号:
package com.softfz.jn0708.thread;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;

import com.softfz.jn0708.srcpackage.FilePath;
import com.softfz.jn0708.srcpackage.SrcPackage;
/**
 * 文件发送线程类
 * @author admin
 *
 */
public class FileSendThread extends Thread {

	private Socket CSocker;

	private BufferedOutputStream bos;

	private BufferedInputStream bis;

	private String fUNo;

	private String tUNo;
	
	private ClientReceiveThread clientThread;
	
	private long count =0 ;
	
	private long tembyte =0;

	/**
	 * 发送文件线程构造
	 * @param fromUNo 发送人编号
	 * @param toUNo 接收人编号
	 * @param fileSendSocket   文件接收人 socket 
	 */
	public FileSendThread(String fUNo, String tUNo, Socket CSocker,ClientReceiveThread clientThread) {
		this.CSocker = CSocker;
		this.fUNo = fUNo;
		this.tUNo = tUNo;
		this.clientThread = clientThread;
		
		try {
			bis = new BufferedInputStream(new FileInputStream(FilePath.FileSendPath));
			bos = new BufferedOutputStream(CSocker.getOutputStream());
		} catch (IOException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}

	}

	/**
	 * 线程run()方法
	 */
	public void run() {

		byte[] buf = new byte[1024];
		int len = 0;
		try {
			while ((len = bis.read(buf)) != -1) {
				count= count +1;
				tembyte = count*buf.length;
				int tmp = (int) ((tembyte*100)/Long.parseLong(FilePath.proLong));
				clientThread.getProbar().setValue(tmp);
				bos.write(buf, 0, len);
				bos.flush();
								

			}

			System.out.println("文件发送结束");
			// 发文件结束包
			SrcPackage fileEndPackage = new SrcPackage();
			fileEndPackage.setFrom(fUNo);
			fileEndPackage.setTo(tUNo);
			fileEndPackage.setType(SrcPackage.FILEEND_TYPE);
			fileEndPackage.setData(null);
			clientThread.getOos().writeObject(fileEndPackage);
			System.out.println("关闭流");
			bis.close();
			bos.close();
			CSocker.close();
			
			

		} catch (IOException e1) {
			// TODO 自动生成 catch 块
			e1.printStackTrace();
		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -