• 简单的java socket 示例


    //搭建服务端

    package com.example.demo.test;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;

    import java.net.Socket;
    /**
    * @author Mack
    * @title
    * @create 2017/9/20 12:05
    */
    public class SocketService {
    //搭建服务器端
    public static void main(String[] args) throws IOException{
    SocketService socketService = new SocketService();
    //1、a)创建一个服务器端Socket,即SocketService
    socketService.oneServer();
    }
    public void oneServer(){
    try{
    ServerSocket server=null;
    try{
    server=new ServerSocket(5209);
    //b)指定绑定的端口,并监听此端口。
    System.out.println("服务器启动成功");
    //创建一个ServerSocket在端口5209监听客户请求
    }catch(Exception e) {
    System.out.println("没有启动监听:"+e);
    //出错,打印出错信息
    }
    Socket socket=null;
    try{
    socket=server.accept();
    //2、调用accept()方法开始监听,等待客户端的连接
    //使用accept()阻塞等待客户请求,有客户
    //请求到来则产生一个Socket对象,并继续执行
    }catch(Exception e) {
    System.out.println("Error."+e);
    //出错,打印出错信息
    }
    //3、获取输入流,并读取客户端信息
    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();
    //从标准输入读入一字符串
    //4、获取输出流,响应客户端的请求
    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();
    //从系统标准输入读入一字符串
    } //继续循环

    //5、关闭资源
    writer.close(); //关闭Socket输出流
    in.close(); //关闭Socket输入流
    socket.close(); //关闭Socket
    server.close(); //关闭ServerSocket
    }catch(Exception e) {//出错,打印出错信息
    System.out.println("Error."+e);
    }
    }
    }

    搭建客户端
    package com.example.demo.test;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;

    /**
    * @author Mack
    * @title
    * @create 2017/9/20 12:18
    */
    public class SocketClient {
    // 搭建客户端
    public static void main(String[] args) throws IOException {
    try {
    // 1、创建客户端Socket,指定服务器地址和端口
    // Socket socket=new Socket("127.0.0.1",5200);
    Socket socket = new Socket("192.168.1.200", 5209);
    System.out.println("客户端启动成功");
    // 2、获取输出流,向服务器端发送信息
    // 向本机的52000端口发出客户请求
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    // 由系统标准输入设备构造BufferedReader对象
    PrintWriter write = new PrintWriter(socket.getOutputStream());
    // 由Socket对象得到输出流,并构造PrintWriter对象
    //3、获取输入流,并读取服务器端的响应信息
    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    // 由Socket对象得到输入流,并构造相应的BufferedReader对象
    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);// 出错,打印出错信息
    }
    }
    }




     

     
  • 相关阅读:
    更新 箫心病毒分析专家2006 build 5.23(C#2.0)
    SOA也是一种设计模式
    SOA在美国和中国的差异
    单服务器配置部署Visual Studio 2005 Team Foundation Server步骤
    无废话ExtJs 入门教程十六[页面布局:Layout]
    无废话ExtJs 入门教程七[登陆窗体Demo:Login]
    无废话ExtJs 入门教程十八[树:TreePanel]
    无废话ExtJs 入门教程十一[下拉列表:Combobox]
    无废话ExtJs 入门教程十[单选组:RadioGroup、复选组:CheckBoxGroup]
    无废话ExtJs 入门教程八[脚本调试Firefox:firebug]
  • 原文地址:https://www.cnblogs.com/wxhbk/p/7560999.html
Copyright © 2020-2023  润新知