Java Socket应用

来源:互联网 发布:淘宝卖家等级哪里看 编辑:程序博客网 时间:2024/06/06 14:00

服务端过程

  1. 创建ServerSocket对象,绑定监听端口
  2. 通过accept()方法监听客户端请求
  3. 连接建立后,通过输入流读取客户端发送的请求信息
  4. 通过输出流向客户端发送响应信息
  5. 关闭相关资源

服务端的代码为:

public class Server {    public static void main(String[] args) {        try {            //1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口            ServerSocket serverSocket = new ServerSocket(6666);            //2.调用accept()方法开始监听,等待客户端的连接            System.out.println("***服务器即将启动,等待客户端的连接***");            Socket socket = serverSocket.accept();            //3.获取输入流,并读取客户端信息            InputStream is = socket.getInputStream();//字节输入流            //将字节流转化为字符流            InputStreamReader isr = new InputStreamReader(is);            //为输入流添加缓冲            BufferedReader br = new BufferedReader(isr);            String info = null;            //循环读取客户端的信息            while((info = br.readLine())!=null){                System.out.println("我是服务器,客户端说:" + info);            }            socket.shutdownInput();//关闭输入流            //4.获取输出流,响应客户端的请求            //其实服务端响应的步骤和客户端发送数据的过程类似            OutputStream os = socket.getOutputStream();            //包装为打印流            PrintWriter pw = new PrintWriter(os);            pw.write("Welcome!");            pw.flush();            //5.关闭相关资源            pw.close();            os.close();            br.close();            isr.close();            is.close();            socket.close();            serverSocket.close();        } catch (IOException e) {            e.printStackTrace();        }    }}

客户端过程

  1. 创建Socket对象,指明需要连接的服务器的地址和端口号
  2. 建立连接后,通过输出流向服务器端发送请求信息
  3. 通过输入流获取服务器响应的信息
  4. 关闭相关资源

客户端代码为:

public class Client {    public static void main(String[] args) {        try {            //1.创建客户端Socket,制定服务器地址和端口            Socket socket = new Socket("127.0.0.1",6666);            //2.获取输出流,向服务器端发送登录信息            OutputStream os = socket.getOutputStream();//字节输出流            PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流            pw.write("Username:admin; password:12345");            pw.flush();            //关闭输出流            socket.shutdownOutput();            //3.获取输入流,并读取服务器端的响应信息            InputStream is = socket.getInputStream();            BufferedReader br = new BufferedReader(new InputStreamReader(is));            String info = null;            //循环读取客户端的信息            while((info = br.readLine())!=null){                System.out.println("我是客户端,服务器说:" + info);            }            //4.关闭其他资源            br.close();            is.close();            pw.close();            os.close();            socket.close();        } catch (IOException e) {            e.printStackTrace();        }    }}

先运行Server.java,显示如下:

s1

再运行Client.java,显示如下:

这里写图片描述

此时再回到Server.java可以看到如下的效果图:

这里写图片描述

0 0
原创粉丝点击