java socket编程

模拟java scoket服务端和客户端编程

 

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;



public class TalkClient {



    public static void main(String args[]) {

        try {

            // 向本机的8000端口发出客户请求

            Socket socket = new Socket("127.0.0.1", 8000);

            // 由系统标准输入设备构造BufferedReader对象

            BufferedReader sin = new BufferedReader(new InputStreamReader(

                    System.in));

            // 由Socket对象得到输出流,并构造PrintWriter对象

            PrintWriter os = new PrintWriter(socket.getOutputStream());

            String readline,receive;

            readline = sin.readLine(); // 从系统标准输入读入一字符串

            BufferedReader is = new BufferedReader(new InputStreamReader(

                    socket.getInputStream()));

            while (!readline.equals("bye")) {

                // 若从标准输入读入的字符串为 "bye"则停止循环

                os.println(readline);

                // 将从系统标准输入读入的字符串输出到Server

                os.flush();

                // 刷新输出流,使Server马上收到该字符串

                System.out.println("client send:" + readline);

                //Thread.sleep(1000);

                receive = is.readLine();

                System.out.println(receive);

                // 从Server读入一字符串,并打印到标准输出上

                readline = sin.readLine(); // 从系统标准输入读入一字符串

            } // 继续循环

            os.close(); // 关闭Socket输出流

            is.close(); // 关闭Socket输入流

            socket.close(); // 关闭Socket

        } catch (Exception e) {

        }

    }

}
import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;



public class TalkServer {



    public static void main(String args[]) {



        try {

            ServerSocket server = null;

            try {

                server = new ServerSocket(8000);

                // 创建一个ServerSocket在端口8000监听客户请求

            } catch (Exception e) {

                System.out.println("can not listen to:" + e);

                // 出错,打印出错信息

            }



            Socket socket = null;



            try {

                socket = server.accept();

                // 使用accept()阻塞等待客户请求,有客户

                // 请求到来则产生一个Socket对象,并继续执行

            } catch (Exception e) {

                System.out.println("Error." + e);

                // 出错,打印出错信息

            }



            String line;

            BufferedReader is = new BufferedReader(new InputStreamReader(

                    socket.getInputStream()));

            // 由Socket对象得到输入流,并构造相应的BufferedReader对象

            PrintWriter os = new PrintWriter(socket.getOutputStream());

            // 由Socket对象得到输出流,并构造PrintWriter对象

            line = is.readLine();

            // 从标准输入读入一字符串

            while (!line.equals("bye")) {

                // 如果该字符串为 "bye",则停止循环

                os.println("server send:yeah,"+line);

                // 向客户端输出该字符串

                os.flush();

                // 刷新输出流,使Client马上收到该字符串

                System.out.println("Server receive:" + line);

                // 从Client读入一字符串,并打印到标准输出上

                line = is.readLine();

                // 从系统标准输入读入一字符串

            }// 继续循环

            os.close(); // 关闭Socket输出流

            is.close(); // 关闭Socket输入流

            socket.close(); // 关闭Socket

            server.close(); // 关闭ServerSocket

        } catch (Exception e) {

        }

    }

}

 

你可能感兴趣的:(java socket)