亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? socketthread.java

?? 這是一個能夠實現文件傳輸的用java開發的源程序
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package daen.graduate.trans;

import java.net.Socket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.*;
import java.net.*;

/**
 * Socket線程
 */
public class SocketThread extends Thread {
    public SocketThread() {
        try {
            jbInit();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public final static int CACHE_SIZE = 10240; //緩存大小

    public final static int FILE_TRANS_STATUS_FILENAME = 0x01; //文件名傳輸狀態

    public final static int FILE_TRANS_STATUS_CONTEXT = 0x02; //文件內容傳輸狀態

    public final static int FILE_TRANS_STATUS_WAITFORCONFIRM = 0x03; //等待確認接收文件

    public final static int FILE_TRANS_STATUS_SUCCESS = 0x04; //文件傳輸成功

    public final static int FILE_TRANS_STATUS_FAIL = 0x05; //文件傳輸失敗

    public final static int FILE_TRANS_STATUS_CANCELTRANS = 0x06; //取消文件傳輸

    public final static int PACKAGE_TYPE_FILENAME = 0x01; //文件名包

    public final static int PACKAGE_TYPE_CONTEXT = 0x02; //文件內容包

    public final static int PACKAGE_TYPE_CONFIRMRECEIVE = 0x03; //是否接收文件

    private Socket aSocket; //套接字

    private String serverName; //服務器名稱

    private DataInputStream dis; //輸入流

    private DataOutputStream dos; //輸出流

    private DataInputStream fDis; //文件輸入流

    private RandomAccessFile raf; //文件輸出流

    private boolean fileSender = false; //文件發送者

    private boolean running = false; //線程運行

    public int fileTransStatus = 0x0; //文件傳輸狀態

    private File aFile; //傳輸的文件

    public long fileSize; //文件大小

    private String fileName; //文件名稱

    private String errorMessage; //錯誤消息

    private long transFileLength = 0; //已傳輸字節數

    private byte [] dataBuf;

    private String message; //驗證消息

    private String IP; //目標IP

    private int port; //目標端口

    private boolean fileTransed=false; //文件是否已經開始傳輸

    int count=0;

    //接收者構造函數
    public SocketThread(Socket aSocket) {
        this.aSocket = aSocket;
        try {
            aSocket.setSoTimeout(300000);
        } catch (SocketException ex) {
        }
        byte[] address = aSocket.getInetAddress().getAddress();
        IP = (address[0] & 0xff) + "." + (address[1] & 0xff) + "." +
             (address[2] & 0xff) + "." + (address[3] & 0xff);
        try {
            dis = new DataInputStream(aSocket.getInputStream());
            dos = new DataOutputStream(aSocket.getOutputStream());
            fileTransStatus = FILE_TRANS_STATUS_FILENAME;
        } catch (IOException ex) {
            setError("創建連接錯誤!");
        }

        try {
            aSocket.setReceiveBufferSize(CACHE_SIZE*2);
        } catch (SocketException ex1) {
            ex1.printStackTrace();
        }
        dataBuf=new byte[CACHE_SIZE+100];
    }

    //發送者構造函數
    public SocketThread(String serverName, int portNo, String fileName,
                        String message) {
            aFile = new File(fileName);
            this.fileName = aFile.getName();
            this.fileSize = fileSize;
            fileSender = true;
            if (message != null) {
                this.message = message;
            }
            this.IP = serverName;
            this.port = portNo;
            dataBuf=new byte[CACHE_SIZE];
    }

    //線程執行函數
    public void run() {
        running = true;
        if (fileSender) {
            try {
                aSocket = new Socket(IP, port);
                aSocket.setSoTimeout(300000);
                aSocket.setSendBufferSize(CACHE_SIZE*2);
                dos = new DataOutputStream(aSocket.getOutputStream());
                dis = new DataInputStream(aSocket.getInputStream());
                fDis = new DataInputStream(new FileInputStream(aFile));
                fileTransStatus = FILE_TRANS_STATUS_FILENAME;
            } catch (UnknownHostException ex1) {
                ex1.printStackTrace();
                setError("連接服務器錯誤!");
            } catch (IOException ex1) {
                ex1.printStackTrace();
                setError("創建連接錯誤!");
            }

        } while (running) {
            if (fileSender) {
                sendFile();
            } else {
                receiveFile();
            }
            try {
                Thread.sleep(6);
            } catch (InterruptedException ex) {
            }
        }
    }

    //從socket讀
    private int readFromSocket(byte[] data) throws IOException {
        int length = 0;
        length = fDis.read(data);
        return length;
    }

    //從socket讀
    private int readFromSocket() throws IOException {
        int buf = 0;
        buf = dis.readInt();
        return buf;
    }

    //從文件讀
    private int readFromFile(byte[] data,int off,int length) {
        int len=0;
        try {
            len = fDis.read(data,off,length);
        } catch (IOException ex) {
            setError("文件讀取錯誤!");
        }
        return len;
    }

    //寫入socket
    private void writeToSocket(byte[] data) throws IOException {
        dos.write(data);
    }

    //寫入文件
    private void writeToFile(byte[] data,int off,int length) throws IOException {
        raf.write(data,off,length);
    }

    //寫入socket
    private void writeToSocket(int data) throws IOException {
        dos.writeInt(data);
    }

    private void writeToSocket(long data) throws IOException {
        dos.writeLong(data);
    }

    private long readLongFromSocket() throws IOException {
        return dis.readLong();
    }

    //打包
    private byte[] doPackage(byte[] data, int length) throws IOException {
        ByteArrayOutputStream buf = new ByteArrayOutputStream();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream bufDos = new DataOutputStream(buf);
        DataOutputStream baosDos = new DataOutputStream(baos);
        switch (fileTransStatus) {
        case FILE_TRANS_STATUS_FILENAME: {
            bufDos.writeInt(PACKAGE_TYPE_FILENAME);
            bufDos.writeInt(fileName.getBytes().length);
            bufDos.write(fileName.getBytes());
            bufDos.writeLong(fileSize);
            if (message!=null) {
                bufDos.writeInt(message.getBytes().length);
                bufDos.write(message.getBytes());
            } else {
                bufDos.writeInt(-1);
            }
            baosDos.writeInt(buf.toByteArray().length);
            baosDos.write(buf.toByteArray());
            break;
        }
        case FILE_TRANS_STATUS_CONTEXT: {
            bufDos.writeInt(PACKAGE_TYPE_CONTEXT);
            if ((transFileLength + length) >= fileSize) {
                bufDos.writeInt(0);
            } else {
                bufDos.writeInt(1);
            }
            bufDos.writeInt(length);
            bufDos.write(data, 0, length);
            baosDos.writeInt(buf.toByteArray().length);
            baosDos.write(buf.toByteArray());
            break;
        }
        }
        return baos.toByteArray();
    }

    //停止線程
    public void stopThread() {
        running = false;
        try {
            if (dis != null) {
                dis.close();
            }
            if (dos != null) {
                dos.close();
            }
            if (fDis != null) {
                fDis.close();
            }
            if (raf != null) {
                raf.close();
            }
        } catch (Exception ex) {
        }
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91丝袜在线播放| 国产成人欧美日韩在线电影| 精品日韩一区二区三区免费视频| www.av亚洲| 麻豆91免费看| 亚洲一区二区三区精品在线| 久久久久国产精品厨房| 欧美丰满一区二区免费视频| 91小视频在线免费看| 久久国产人妖系列| 亚洲成av人片在线观看无码| 日韩一区日韩二区| 国产日韩精品一区二区三区 | 丝袜诱惑亚洲看片| 综合色天天鬼久久鬼色| 精品国产污网站| 欧美日韩一区二区三区四区五区 | 91精品国产综合久久久久久久 | 国产在线一区观看| 天涯成人国产亚洲精品一区av| 国产精品久久久久天堂| 国产欧美1区2区3区| 亚洲精品一区二区三区在线观看| 欧美日韩不卡一区二区| 色天天综合久久久久综合片| 99国产欧美久久久精品| 成人网页在线观看| 粉嫩蜜臀av国产精品网站| 国产精品一区二区无线| 精品一区二区三区久久久| 日本视频一区二区三区| 日本视频一区二区| 久久超碰97中文字幕| 日本一道高清亚洲日美韩| 日韩国产在线一| 五月综合激情婷婷六月色窝| 亚洲高清不卡在线观看| 一区二区三区在线不卡| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产91精品精华液一区二区三区| 国产成人午夜电影网| 国产乱色国产精品免费视频| 国产综合色视频| 国产乱人伦偷精品视频免下载| 国产乱人伦偷精品视频不卡| 国产高清精品在线| 成人av一区二区三区| 91网站黄www| 91成人免费在线| 欧美日韩国产一区二区三区地区| 91麻豆精品国产91| 欧美电影免费观看高清完整版| 欧美不卡一二三| 亚洲国产精品二十页| 亚洲人吸女人奶水| 亚洲精品免费电影| 亚洲国产精品久久久久婷婷884| 亚洲超碰97人人做人人爱| 丝袜亚洲另类欧美| 激情小说欧美图片| 成人不卡免费av| 欧美综合天天夜夜久久| 91精品久久久久久久久99蜜臂| 精品国产百合女同互慰| 欧美韩日一区二区三区| 亚洲黄色片在线观看| 日韩影视精彩在线| 国产v综合v亚洲欧| 欧美在线三级电影| 精品国产免费一区二区三区香蕉| 国产欧美一区二区精品忘忧草| 亚洲欧美国产三级| 日韩高清在线一区| 成人天堂资源www在线| 欧美亚洲一区二区在线观看| 精品国内片67194| 亚洲欧洲精品一区二区三区| 天堂va蜜桃一区二区三区| 国产精品伊人色| 欧美亚洲综合久久| 国产情人综合久久777777| 亚洲一区二区三区四区在线观看| 伦理电影国产精品| 91蝌蚪porny| 精品国产亚洲一区二区三区在线观看 | 91久久精品一区二区三| 4438x亚洲最大成人网| 国产精品久久久久影院色老大| 丝袜美腿亚洲一区二区图片| 成人福利视频在线看| 日韩精品在线一区二区| 亚洲精品日产精品乱码不卡| 精品在线一区二区| 欧美日韩在线免费视频| 中国色在线观看另类| 日韩激情视频网站| 91黄色免费看| 国产免费观看久久| 久久精品国产久精国产爱| 色婷婷av一区二区| 国产精品女同互慰在线看| 日韩在线a电影| 色诱视频网站一区| 国产精品久久一级| 国产在线视频一区二区| 在线播放国产精品二区一二区四区 | 三级亚洲高清视频| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 色综合天天天天做夜夜夜夜做| 亚洲欧美日韩精品久久久久| 精品一区二区三区在线视频| 欧美性色黄大片| 亚洲天堂成人在线观看| 国产电影精品久久禁18| 欧美mv日韩mv| 日本强好片久久久久久aaa| 在线中文字幕一区二区| 亚洲欧美日韩精品久久久久| 成人黄色网址在线观看| 久久精品欧美日韩| 久久成人久久爱| 日韩欧美不卡在线观看视频| 日韩一区精品字幕| 欧美乱熟臀69xxxxxx| 亚洲福利国产精品| 欧美午夜在线观看| 亚洲综合激情网| 在线免费观看成人短视频| 亚洲综合丝袜美腿| 欧美性生活影院| 首页国产丝袜综合| 91精品视频网| 美女一区二区在线观看| 日韩欧美国产系列| 免费美女久久99| 欧美精品一区二区三| 国产一区三区三区| 国产区在线观看成人精品| 成人一区二区三区视频在线观看 | 午夜精品视频一区| 欧美福利视频一区| 久久精品国产99| 26uuu久久综合| 国产精品亚洲专一区二区三区| 久久久www成人免费毛片麻豆 | 免费成人在线播放| 欧美一级高清片在线观看| 美女在线观看视频一区二区| 精品国产乱码久久久久久浪潮| 国产丶欧美丶日本不卡视频| 国产精品免费人成网站| 91福利在线播放| 日韩精品亚洲专区| 欧美xxxxx裸体时装秀| 粉嫩一区二区三区在线看| 亚洲欧美日韩系列| 欧美精品丝袜久久久中文字幕| 欧美aaaaa成人免费观看视频| 日韩美女天天操| 成人视屏免费看| 一区二区高清免费观看影视大全| 欧美一区二区三区影视| 国产黄色精品网站| 亚洲美女屁股眼交| 制服丝袜亚洲色图| 国产精品亚洲成人| 伊人开心综合网| 欧美一级午夜免费电影| 高清av一区二区| 亚洲午夜电影在线观看| www国产成人免费观看视频 深夜成人网| 成人蜜臀av电影| 亚洲福利视频导航| 国产肉丝袜一区二区| 欧美亚洲一区二区在线观看| 国内成人自拍视频| 一区二区三区在线观看欧美| 欧美精品一区二区三区很污很色的| av中文字幕亚洲| 免费看欧美女人艹b| 国产精品麻豆视频| 欧美福利视频导航| 99re免费视频精品全部| 麻豆精品精品国产自在97香蕉 | 激情五月激情综合网| 亚洲男人的天堂一区二区| 欧美岛国在线观看| 色菇凉天天综合网| 国产露脸91国语对白| 亚洲午夜精品17c| 中文字幕欧美三区| 日韩欧美亚洲一区二区| 91成人免费网站| 成人午夜视频免费看| 蜜臀久久99精品久久久画质超高清 | 五月激情综合网| 1000部国产精品成人观看| 精品国产乱码久久久久久牛牛| 精品视频1区2区3区| 99精品国产视频|