在网上看了很多关于Thread和Socket的资料,项目中也用到不少,但是都是比较简单,或者是用一些现成的,现在想从头开始,慢慢的再学习。希望能和各位前辈进行交流。接触的需求好多一开始比较简单,后来就慢慢复杂了,我想这个学的过程也是,先来个简单的,然后再慢慢的进行完善。好了,不废话了。 
场景:客户端将键盘输入的字符通过socket发送到服务端,当输入的字符为“exit”时,程序退出,服务端仅仅将接收到的信息打印出来。 
服务端代码:1.public class SocketServer extends Thread{     
2.         
3.        private java.net.ServerSocket ss;     
4.        private java.net.Socket s;     
5.        @Override     
6.        public void run() {     
7.            try{     
8.                while(true){     
9.                    this.s=this.ss.accept();     
10.                    java.io.BufferedReader reader =     
11.                        new BufferedReader(     
12.                                new java.io.InputStreamReader(     
13.                                        s.getInputStream()));     
14.                    String str=reader.readLine();     
16.                    while(str!=null){     
18.                        System.out.println(str);     
19.                        str=reader.readLine();     
20.                    }     
21.                    reader.close();     
22.                    this.s.close();     
23.                }     
24.            }catch(Exception ex){     
25.                ex.printStackTrace();     
26.            }     
27.        }     
28.        public SocketServer(int port){     
29.            try{     
30.                System.out.println("服务端启动.......");     
31.                this.ss=new ServerSocket(port);     
32.            }catch(Exception ex){     
33.                ex.printStackTrace();     
34.            }     
35.        }     
36.        public static void main(String[] args){     
37.            Thread t=new SocketServer(8888);     
38.            t.start();     
39.        }     
40.    }    
客户端的代码:
1.public class SocketClient{     
2.        public static void main(String[] args)throws Exception {     
3.            java.net.Socket s=new java.net.Socket("127.0.0.1",8888);     
4.            java.io.BufferedWriter out=new java.io.BufferedWriter(     
5.                    new java.io.OutputStreamWriter(     
6.                            new java.io.BufferedOutputStream(s.getOutputStream())));     
7.                 
8.            java.io.BufferedReader reader=new BufferedReader(     
9.                    new java.io.InputStreamReader(System.in));     
10.                 
11.            String str=reader.readLine();     
12.            while(!"exit".equals(str)){     
13.                out.write(str + "\n");     
14.                out.flush();     
15.                str=reader.readLine();     
16.            }     
17.            reader.close();     
18.            out.close();     
19.        }     
20.    }    下一步准备把客户端发送方式调整下,改为多线程发送,并采用线程池的方式,希望和各位多多交流。