本文实例讲述了java基于socket传输zip文件的方法。分享给大家供大家参考,具体如下:
服务器端程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import java.io.*; import java.net.*; import java.io.BufferedInputStream; public class SocketServer { ServerSocket ss= null ; Socket s= null ; DataInputStream inStream= null ; DataOutputStream outStream= null ; FileInputStream fin = null ; public SocketServer() { try { ss= new ServerSocket( 765 ); s.setSoTimeout( 3000 ); } catch (Exception e){ System.out.println(e.toString()); } } void waitForClient(){ try { while ( true ){ s=ss.accept(); ThreadServer thread = new ThreadServer(s); thread.start(); } } catch (Exception e){ System.out.println(e.toString()); } } public static void main(String[] args) { SocketServer socketServer1 = new SocketServer(); socketServer1.waitForClient(); } } |
线程类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
import java.io.*; import java.net.*; class ThreadServer extends Thread{ private Socket socket; private DataInputStream inStream= null ; private DataOutputStream outStream= null ; private FileInputStream fin = null ; public ThreadServer(Socket sock){ this .socket = sock; } public void run(){ boolean bool = false ; //while(!bool){ try { inStream= new DataInputStream(socket.getInputStream()); outStream= new DataOutputStream(socket.getOutputStream()); fin = new FileInputStream( "C:/temp/socket/200212060001_ds.zip" ); //socket.setSoTimeout(3000); byte [] b = new byte [ 200 ]; int i; while ((i=fin.read(b))!=- 1 ){ outStream.write(b); } fin.close(); socket.close(); //bool = true; } catch (IOException ex){ System.out.println(ex); } //} } } |
客户端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import java.net.*; import java.io.*; public class SocketClient{ Socket s= null ; DataInputStream inStream= null ; DataOutputStream outStream= null ; FileOutputStream fout = null ; public SocketClient() { try { s= new Socket( "192.9.207.52" , 765 ); //把这里的IP改成你运行SocketServer.class的IP inStream= new DataInputStream(s.getInputStream()); outStream= new DataOutputStream(s.getOutputStream()); fout = new FileOutputStream( "C:/temp/socket/test11.zip" ); s.setSoTimeout( 3000 ); waitData(); } catch (Exception e){ System.out.println(e.toString()); } } void init() throws Exception{ } void waitData(){ try { byte [] b = new byte [ 200 ]; int i; while ((i=inStream.read(b))!=- 1 ){ fout.write(b); } fout.flush(); fout.close(); s.close(); } catch (Exception e){ System.out.println(e.toString()); } } public static void main(String[] args) { SocketClient socketClient1 = new SocketClient(); } } |
希望本文所述对大家java程序设计有所帮助。