服务端:
 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 
客户端:
 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 


posted on 2007-02-08 13:48 -274°C 阅读(17808) 评论(1)  编辑  收藏 所属分类: JAVA计算机综合


FeedBack:
# re: SOCKET编程
2007-02-13 14:13 | αβγ
多线程的实现范例:(程序有修改)
public static void main (String args[])
{
try
{
server = new ServerSocket (10888);
while(true)
{
client = server.accept ();
new Server (server,client).start ();
}
}
catch(Exception e)
{
System.out.println (e.toString ());
}

}  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

常用链接

留言簿(21)

随笔分类(265)

随笔档案(242)

相册

JAVA网站

关注的Blog

搜索

  •  

积分与排名

  • 积分 - 873224
  • 排名 - 37

最新评论