java编程网络编程,多线程,小型聊天系统

package SocketTest;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
//java编程网络编程,多线程,小型聊天系统
public class Server6 {
    public static void main(String[] args) {
            new Thread(){
                ServerSocket serverSocket = null;//服务器套接字定义初始化
                Socket client = null;//客服端套接字初始化
                OutputStream os = null;//此抽象类是表示输出字节流的所有类的超类。
                InputStream is= null;//此抽象类是表示字节输入流的所有类的超类。
                //从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 
                BufferedReader br = null;
                //将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 
                BufferedWriter bw= null;
                BufferedReader br1 = null;

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                try{
//                      new Date()该对象会返回当前的时间
                    System.out.println("服务器启动:"+new Date());
//                  初始化服务器
                    serverSocket = new ServerSocket(8888);
                    client =serverSocket.accept();//accept()监听客户端的连接,没有连接则处于阻塞状态
                    os =client.getOutputStream();//打开通往客户端的输出流,可以用来给客户端发数据
                    is = client.getInputStream();//打开客户端通往服务器端的输入流,用来接收来自客户端的数据
                    br1=new BufferedReader(new InputStreamReader(System.in));
                    br =new BufferedReader(new InputStreamReader(is));
                    bw = new BufferedWriter(new OutputStreamWriter(os));

                    while(true){
        //              1.读客户端发来的数据
                        System.out.println("客户端说:"+br.readLine());
        //              2.读取服务器端通过键盘输入的内容
                        String line =br1.readLine();
        //              3.将服务器端输入的内容发送给客户端
                        bw.write(line);
                        bw.newLine();
                        bw.flush();
                        if("quit".equals(line)){
                            break;
                        }
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally{
                    try {
                        serverSocket.close();
                        client.close();
                        os.close();
                        is.close();
                        br.close();
                        bw.close();
                        br1.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                }
            }.start();
        }
}
/*
服务器启动:Tue Dec 26 00:34:41 CST 2017
客户端说:服务器你好
你也好
客户端说:我收到了
好的
客户端说:quit
quit

*/
package SocketTest;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client6 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Socket client=null;
        OutputStream os = null;
        InputStream is= null;
        BufferedReader br = null;
        BufferedWriter bw= null;
        BufferedReader brServer=null;

        try {
//          连接服务器,通过ip和端口号
            client = new Socket("127.0.0.1",8888);
            os =client.getOutputStream();//打开通往客户端的输出流,可以用来给客户端发数据
            is = client.getInputStream();//打开客户端通往服务器端的输入流,用来接收来自客户端的数据
//          从键盘读取一行字符串
            br =new BufferedReader(new InputStreamReader(System.in));
//          将字符串发送到Server1服务器端
            bw =new BufferedWriter(new OutputStreamWriter(os));
            brServer = new BufferedReader(new InputStreamReader(is));
            System.out.println("-----------开始聊天-------------");
            while(true){
//              1.读取客户端通过键盘输入的内容
                String line =br.readLine();
//              2.将客户端输入的内容发送给服务器
                bw.write(line);
                bw.newLine();
                bw.flush();
                if("quit".equals(line)){
                    break;
                }
//              3.读server服务器发来的数据
                System.out.println("服务器说:"+brServer.readLine());
                }   
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                client.close();
                os.close();
                is.close();
                br.close();
                bw.close();
                brServer.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}
/*
-----------开始聊天-------------
服务器你好
服务器说:你也好
我收到了
服务器说:好的
quit
*/

你可能感兴趣的:(Java编程)