自己动手写简单的web应用服务器(2)—实现多个客户端端连接同一个服务器

服务端源码:

 1 package serverAndClients;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.io.InputStreamReader;
 7 import java.io.OutputStream;
 8 import java.io.OutputStreamWriter;
 9 import java.io.PrintWriter;
10 import java.net.ServerSocket;
11 import java.net.Socket;
12 
13 public class Server {
14     private ServerSocket ss;
15     private int port = 8081;
16 
17     /** 利用构造方法,初始化ServerSocket */
18     public Server() {
19         try {
20             ss = new ServerSocket(port);
21         } catch (IOException e) {
22             e.printStackTrace();
23         }
24     }
25 
26     /** 服务器启动,等待客户端进入,产生socket对象,将该对象交给线程去执行 */
27     public void start() {
28         while(true){
29             try {
30                 Socket s = ss.accept();
31                 Thread clientThread = new Thread(new Handler(s));
32                 clientThread.start();
33             } catch (IOException e) {
34                 e.printStackTrace();
35             }
36         }
37         
38     }
39 
40     private class Handler implements Runnable {
41         private Socket s;
42 
43         /** 利用构造方法,接收传入的socket */
44         public Handler(Socket s) {
45             this.s = s;
46         }
47 
48         @Override
49         public void run() {
50 
51             try {
52                 InputStream is = s.getInputStream();
53                 OutputStream os = s.getOutputStream();
54                 BufferedReader reader = new BufferedReader(
55                         new InputStreamReader(is, "utf-8"));
56                 PrintWriter writer = new PrintWriter(new OutputStreamWriter(os,
57                         "utf-8"));
58                 System.out.println("有客户端进入:");
59                 String str = reader.readLine();
60                 System.out.println("接受客户端消息:" + str);
61                 writer.println("你好,客户端!");
62                 writer.flush();
63                 s.close();
64             } catch (IOException e) {
65                 e.printStackTrace();
66             }
67         }
68 
69     }
70 
71     public static void main(String[] args) {
72         Server server = new Server();
73         server.start();
74     }
75 }

客户端源码:

 1 package serverAndClients;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.io.InputStreamReader;
 7 import java.io.OutputStream;
 8 import java.io.OutputStreamWriter;
 9 import java.io.PrintWriter;
10 import java.net.Socket;
11 import java.net.UnknownHostException;
12 
13 public class Client {
14     private Socket s;
15     
16     public void send(){
17         try {
18             s = new Socket("192.168.1.103",8081);
19             InputStream is = s.getInputStream();
20             OutputStream os = s.getOutputStream();
21             BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"));
22             PrintWriter writer = new PrintWriter(new OutputStreamWriter(os,"utf-8"));
23             writer.println("你好服务器!");
24             writer.flush();
25             String str = reader.readLine();
26             System.out.println("接受服务器的消息:"+str);
27             s.close();
28         } catch (Exception e) {
29             e.printStackTrace();
30         }
31     }
32     public static void main(String[] args) {
33         Client client = new Client();
34         client.send();
35     }
36 }

 

posted @ 2014-09-29 15:21  迷音  阅读(264)  评论(0编辑  收藏  举报