學習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

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 祁东县| 金山区| 观塘区| 龙州县| 新建县| 莫力| 赣榆县| 安塞县| 本溪| 循化| 龙陵县| 阿拉善左旗| 葵青区| 松江区| 邓州市| 石棉县| 宜都市| 浙江省| 濮阳市| 上饶市| 长治县| 无极县| 和林格尔县| 铁力市| 乌兰浩特市| 香港 | 桑植县| 夹江县| 贵德县| 贺州市| 金寨县| 灵川县| 正蓝旗| 清丰县| 巴青县| 宝清县| 得荣县| 久治县| 抚宁县| 鲜城| 淮安市|