简单的socket通讯方法客户端和服务器端

来源:互联网 发布:实况8修改球员数据 编辑:程序博客网 时间:2024/06/06 00:45

客户端

package socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class ClientTCP {// 搭建客户端    public static void main(String[] args) throws IOException {        try {            // 1、创建客户端Socket,指定服务器地址和端口            Socket socket=new Socket("127.0.0.1",5200);//Socket socket = new Socket("10.0.150.110", 5200);                        System.out.println("客户端启动成功");            // 2、向服务器端发送信息            // 向服务器的5200端口发出请求            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));            // 构造BufferedReader对象,创建标准输入            PrintWriter write = new PrintWriter(socket.getOutputStream());            // 由Socket对象得到输出流            //3、获取输入流,并读取服务器端的信息             BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));            // 由Socket对象得到输入流            String readline;            readline = br.readLine(); // 读入一字符串            while (!readline.equals("end")) {                // 读入的字符串为 "end"则停止循环            write.println(readline);                // 将入读入的字符串输出到Server                write.flush();                // 刷新输出流,使Server马上收到该字符串                System.out.println("Client:" + readline);                // 在系统标准输出上打印读入的字符串                System.out.println("Server:" + in.readLine());                // 从Server读入一字符串,并打印到标准输出上                readline = br.readLine(); // 从系统标准输入读入一字符串            } // 继续循环            //4、关闭资源             write.close(); // 关闭Socket输出流            in.close(); // 关闭Socket输入流            socket.close(); // 关闭Socket        } catch (Exception e) {            System.out.println("can not listen to:" + e);// 打印错误信息        }    }}

服务器端

package socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class ServerTCP {//搭建服务器端    public static void main(String[] args) throws IOException{        SocketService socketService = new SocketService();        //创建一个服务器端Socket,即SocketService         socketService.oneServer();    }    public  void oneServer(){        try{            ServerSocket server=null;            try{                server=new ServerSocket(5200);                //指定绑定的端口,并监听此端口。                System.out.println("服务器启动成功");                //创建一个ServerSocket在端口5209监听客户请求            }catch(Exception e) {                    System.out.println("没有启动监听:"+e);                    //出错,打印出错信息            }            Socket socket=null;            try{                socket=server.accept();                //调用accept()方法开始监听,等待客户端的连接                 //使用accept()阻塞等待客户请求,有客户                //请求到来则产生一个Socket对象,并继续执行            }catch(Exception e) {                System.out.println("Error."+e);                //出错,打印出错信息            }            //获取输入流,并读取客户端信息             String line;            BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));            //由Socket对象得到输入流,并构造相应的BufferedReader对象            PrintWriter writer=new PrintWriter(socket.getOutputStream());            //由Socket对象得到输出流,并构造PrintWriter对象            BufferedReader br=new BufferedReader(new InputStreamReader(System.in));            //由系统标准输入设备构造BufferedReader对象            System.out.println("Client:"+in.readLine());            //在标准输出上打印从客户端读入的字符串            line=br.readLine();            //从标准输入读入一字符串            //获取输出流,响应客户端的请求             while(!line.equals("end")){            //如果该字符串为 "bye",则停止循环                writer.println(line);                //向客户端输出该字符串                writer.flush();                //刷新输出流,使Client马上收到该字符串                System.out.println("Server:"+line);                //在系统标准输出上打印读入的字符串                System.out.println("Client:"+in.readLine());                //从Client读入一字符串,并打印到标准输出上                line=br.readLine();                //从系统标准输入读入一字符串            } //继续循环             writer.close(); //关闭Socket输出流            in.close(); //关闭Socket输入流            socket.close(); //关闭Socket            server.close(); //关闭ServerSocket        }catch(Exception e) {//出错,打印出错信息            System.out.println("Error."+e);        }    }}

阅读全文
0 0
原创粉丝点击