1 package com.socket;
2
3 import java.io.*;
4 import java.net.*;
5 public class Server
6 {
7 public Server ()
8 {
9 }
10 static ServerSocket ss;
11 static Socket client;
12 public static void main (String args[])
13 {
14 try
15 {
16 ss = new ServerSocket (8099);
17 client = ss.accept ();
18 }
19 catch (Exception ex)
20 {
21 ex.printStackTrace ();
22 }
23 //實現多線程
24 new ServerThread (ss,client).start ();
25 }
26 }
27 class ServerThread extends Thread
28 {
29 ServerSocket ss;
30 Socket client;
31
32 public ServerThread (ServerSocket bb,Socket aa)
33 {
34 ss = bb;
35 client = aa;
36 }
37 public void run ()
38 {
39 try
40 {
41 File file = new File ("test2.jpg");
42 //創建網絡服務器接受客戶請求
43 /////////////////////////////////////////////////////////////////////
44 //得到客戶輸入的信息,這樣可以處理不同請求
45 BufferedReader in = new BufferedReader (new InputStreamReader (client.getInputStream ()));
46 if((in.readLine ()).equals ("1"))
47 {
48 file = new File ("test1.jpg");
49 }
50 ///////////////////////////////////////////////////////////////////////
51 FileInputStream fos = new FileInputStream (file);
52 //創建網絡輸出流并提供數據包裝器
53 OutputStream netOut = client.getOutputStream ();
54 OutputStream doc = new DataOutputStream (new BufferedOutputStream (netOut));
55 //創建文件讀取緩沖區
56 byte[] buf = new byte[2048];
57 int num = fos.read (buf);
58 while(num!=(-1))
59 {
60 doc.write (buf,0,num);//把文件數據寫出網絡緩沖區
61 doc.flush ();//刷新緩沖區把數據寫往客戶端
62 num=fos.read (buf);//繼續從文件中讀取數據
63 }
64 fos.close ();
65 doc.close ();
66 }
67 catch (FileNotFoundException ex)
68 {
69 ex.printStackTrace ();
70 }
71 catch (IOException ex)
72 {
73 ex.printStackTrace ();
74 }
75 }
76 }
77
客戶端:2
3 import java.io.*;
4 import java.net.*;
5 public class Server
6 {
7 public Server ()
8 {
9 }
10 static ServerSocket ss;
11 static Socket client;
12 public static void main (String args[])
13 {
14 try
15 {
16 ss = new ServerSocket (8099);
17 client = ss.accept ();
18 }
19 catch (Exception ex)
20 {
21 ex.printStackTrace ();
22 }
23 //實現多線程
24 new ServerThread (ss,client).start ();
25 }
26 }
27 class ServerThread extends Thread
28 {
29 ServerSocket ss;
30 Socket client;
31
32 public ServerThread (ServerSocket bb,Socket aa)
33 {
34 ss = bb;
35 client = aa;
36 }
37 public void run ()
38 {
39 try
40 {
41 File file = new File ("test2.jpg");
42 //創建網絡服務器接受客戶請求
43 /////////////////////////////////////////////////////////////////////
44 //得到客戶輸入的信息,這樣可以處理不同請求
45 BufferedReader in = new BufferedReader (new InputStreamReader (client.getInputStream ()));
46 if((in.readLine ()).equals ("1"))
47 {
48 file = new File ("test1.jpg");
49 }
50 ///////////////////////////////////////////////////////////////////////
51 FileInputStream fos = new FileInputStream (file);
52 //創建網絡輸出流并提供數據包裝器
53 OutputStream netOut = client.getOutputStream ();
54 OutputStream doc = new DataOutputStream (new BufferedOutputStream (netOut));
55 //創建文件讀取緩沖區
56 byte[] buf = new byte[2048];
57 int num = fos.read (buf);
58 while(num!=(-1))
59 {
60 doc.write (buf,0,num);//把文件數據寫出網絡緩沖區
61 doc.flush ();//刷新緩沖區把數據寫往客戶端
62 num=fos.read (buf);//繼續從文件中讀取數據
63 }
64 fos.close ();
65 doc.close ();
66 }
67 catch (FileNotFoundException ex)
68 {
69 ex.printStackTrace ();
70 }
71 catch (IOException ex)
72 {
73 ex.printStackTrace ();
74 }
75 }
76 }
77
1 package com.socket;
2
3
4 import java.io.*;
5 import java.net.*;
6
7 public class Client
8 {
9
10 public Client ()
11 {
12
13 }
14 public static void main(String[] args)throws Exception
15 {
16 //使用本地文件系統接受網絡數據并存為新文件
17 File file = new File("newFile.jpg");
18 if(file.length()!= 0)
19 {
20 file.delete();
21 System.out.println(file.getPath());
22 System.out.println("執行刪除!");
23
24 }
25 file.createNewFile();
26 RandomAccessFile raf = new RandomAccessFile(file,"rw");
27 // 通過Socket連接服務器
28 Socket server = new Socket("127.0.0.1",8099);
29
30 ///////////////////////////////////////////////////////////////////////////////
31 //創建向服務器傳送流對象
32 OutputStream out = server.getOutputStream();
33 PrintWriter netout = new PrintWriter(out,true);
34 BufferedReader line = new BufferedReader(new InputStreamReader(System.in));
35 netout.println(line.readLine());
36 ///////////////////////////////////////////////////////////////////////////////
37
38 //創建網絡接受流接受服務器文件數據
39 InputStream netIn = server.getInputStream();
40 InputStream in = new DataInputStream(new BufferedInputStream(netIn));
41 //創建緩沖區緩沖網絡數據
42 byte[] buf = new byte[2048];
43 int num = in.read(buf);
44 while(num!=(-1))
45 { //是否讀完所有數據
46 raf.write(buf,0,num);//將數據寫往文件
47 raf.skipBytes(num);//順序寫文件字節
48 num=in.read(buf);//繼續從網絡中讀取文件
49 }
50 in.close();
51 raf.close();
52 }
53 }
54
2
3
4 import java.io.*;
5 import java.net.*;
6
7 public class Client
8 {
9
10 public Client ()
11 {
12
13 }
14 public static void main(String[] args)throws Exception
15 {
16 //使用本地文件系統接受網絡數據并存為新文件
17 File file = new File("newFile.jpg");
18 if(file.length()!= 0)
19 {
20 file.delete();
21 System.out.println(file.getPath());
22 System.out.println("執行刪除!");
23
24 }
25 file.createNewFile();
26 RandomAccessFile raf = new RandomAccessFile(file,"rw");
27 // 通過Socket連接服務器
28 Socket server = new Socket("127.0.0.1",8099);
29
30 ///////////////////////////////////////////////////////////////////////////////
31 //創建向服務器傳送流對象
32 OutputStream out = server.getOutputStream();
33 PrintWriter netout = new PrintWriter(out,true);
34 BufferedReader line = new BufferedReader(new InputStreamReader(System.in));
35 netout.println(line.readLine());
36 ///////////////////////////////////////////////////////////////////////////////
37
38 //創建網絡接受流接受服務器文件數據
39 InputStream netIn = server.getInputStream();
40 InputStream in = new DataInputStream(new BufferedInputStream(netIn));
41 //創建緩沖區緩沖網絡數據
42 byte[] buf = new byte[2048];
43 int num = in.read(buf);
44 while(num!=(-1))
45 { //是否讀完所有數據
46 raf.write(buf,0,num);//將數據寫往文件
47 raf.skipBytes(num);//順序寫文件字節
48 num=in.read(buf);//繼續從網絡中讀取文件
49 }
50 in.close();
51 raf.close();
52 }
53 }
54