學習net包---利用socket進行文件傳送

          和昨天的類似,只是今天學習了文件的傳遞,主要是加深對socket的理解以及對IO操作中DataInputStream和DataOutputStream類的使用,主要程序代碼如下:

        1. 服務器端:

        2. package test.net;

          import java.io.DataInputStream;
          import java.io.DataOutputStream;
          import java.io.File;
          import java.io.FileInputStream;
          import java.io.IOException;
          import java.net.ServerSocket;
          import java.net.Socket;

          /**
          ?* 本例為通過socket編程實現從服務器端發送文件到客戶端
          ?* @author zouqingbing
          ?*/
          public class fileServer {

          ?public static void main(String[] a) {
          ??fileServer fileServer = new fileServer();
          ??fileServer.sendFile();
          ?}

          ?public void sendFile() {
          ??byte[] buffer = new byte[1024];// 定義一byte類型的緩沖區。
          ??try {
          ???ServerSocket ssocket = new ServerSocket(2000);
          ???System.out.println("服務器啟動!");
          ???Socket socket = ssocket.accept();
          ???int length = 0;

          ???File f = new File("d:\\aaa.txt");
          ???FileInputStream fis = new FileInputStream(f);
          ???DataInputStream dataIn = new DataInputStream(fis);
          ???DataOutputStream dataOut = new DataOutputStream(socket
          ?????.getOutputStream());

          ???while ((length = dataIn.read(buffer)) != -1) {
          ????dataOut.write(buffer, 0, length);
          ???}
          ???dataOut.flush();
          ???dataOut.close();
          ???fis.close();
          ???System.out.println("文件傳送完畢!!!");
          ???socket.close();
          ??} catch (IOException ex) {
          ???ex.printStackTrace();
          ??}
          ?}
          }

        3. 客戶端:

        4. package test.net;

          import java.io.DataInputStream;
          import java.io.File;
          import java.io.FileOutputStream;
          import java.io.IOException;
          import java.net.Socket;

          /**
          ?* 本例使用socket編程實現從服務器端接收程序到客戶端
          ?* @author zouqingbing
          ?*/
          public class fileClient {
          ?public static void main(String[] args) {
          ??fileClient fileClient = new fileClient();
          ??fileClient.receiveFile();
          ?}

          ?public void receiveFile() {
          ??byte[] buffer = new byte[1024];
          ??int length = 0;
          ??try {
          ???Socket socket = new Socket("10.40.2.7", 2000);
          ???DataInputStream dataIn = new DataInputStream(socket
          ?????.getInputStream());

          ???File f = new File("d:\\fff.txt");
          ???if (!f.exists())
          ????f.createNewFile();
          ???FileOutputStream fos = new FileOutputStream(f);

          ???while ((length = dataIn.read(buffer)) != -1) {
          ????fos.write(buffer, 0, length);
          ???}

          ???fos.close();
          ???System.out.println("客戶端文件接收完畢!!!");
          ???socket.close();
          ??} catch (IOException e) {
          ???e.printStackTrace();
          ??}
          ?}
          }

          另,要注意的是在socket通訊完畢后要關閉文件和socket連接,這里我起初沒有關閉,結果拋出異常,關閉后就ok了.

          posted on 2007-05-16 15:33 心硯 閱讀(540) 評論(0)  編輯  收藏 所屬分類: Java

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          文章分類

          文章檔案

          Forum

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 清徐县| 博兴县| 张北县| 晋宁县| 广安市| 松原市| 保亭| 南皮县| 勐海县| 凤翔县| 手机| 赞皇县| 伊春市| 新乡县| 全南县| 龙江县| 栖霞市| 兰西县| 蒙阴县| 建瓯市| 天镇县| 宽城| 呈贡县| 泗水县| 治多县| 江津市| 丹阳市| 九龙县| 惠安县| 定边县| 太原市| 宜春市| 达州市| 论坛| 潮州市| 苍溪县| 大邑县| 花莲县| 西乌珠穆沁旗| 巨鹿县| 青岛市|