Java 中Socket的用法

来源:互联网 发布:校宝软件 编辑:程序博客网 时间:2024/06/05 09:53

普通Socket的用法

Java中的网络通信是通过Socket实现的

Socket分为两类:

  1. ServerSocket:用于服务端,可以通过accept方法监听请求,监听到请求后返回Socket。
  2. Socket:用于具体完成数据传输,客户端直接使用Socket发起请求并传输数据。

ServerSocket(服务端)

ServerSocket的使用可分为三步:

  1. 创建 ServerSocket。
  2. 调用创建出来的 ServerSocket 的 accept 方法进行监听。
  3. 使用 accept 方法返回的 Socket 与客户端进行通信。

Server.java

package com.jeiker.demo;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;/** * @author : xiao * @date : 17/10/22 下午3:09 * @description : Socket 服务端程序 */public class Server {    public static void main(String srgs[]){        try {            // 创建一个ServerSocket监听8080端口            ServerSocket serverSocket = new ServerSocket(8888);            // 等待请求            Socket socket = serverSocket.accept();            // 接收到请求后使用 socket 进行通信,创建 BufferedReader 用于读取数据            BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));            String line = is.readLine();            System.out.println("received from client: " + line);            // 创建 PrintWriter 用于发送数据            PrintWriter pw = new PrintWriter(socket.getOutputStream());            pw.println("received data: " + line);            pw.flush();            // 关闭资源,注意顺序            pw.close();            is.close();            socket.close();            serverSocket.close();        } catch (Exception e) {            e.printStackTrace();        }    }}

Socket(客户端)

ServerSocket的使用可分为三步:

  1. 创建 ServerSocket。
  2. 调用创建出来的 ServerSocket 的 accept 方法进行监听。
  3. 使用 accept 方法返回的 Socket 与客户端进行通信。

Client.java

package com.jeiker.demo;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;/** * @author : xiao * @date : 17/10/22 下午3:34 * @description : Socket 客户端程序 */public class Client {    public static void main(String args[]) {        String msg = "Client Data";        try {            // 创建一个Socket,跟本机的8080端口连接            Socket socket = new Socket("localhost", 8888);            // 使用Socket 创建PrintWriter和BufferedReader进行读写数据            PrintWriter pw = new PrintWriter(socket.getOutputStream());            BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));            // 发送数据            pw.println(msg);            pw.flush();            // 接收数据            String line = is.readLine();            System.out.println("received from server: " + line);            // 关闭资源            pw.close();            is.close();            socket.close();        } catch (Exception e) {            e.printStackTrace();        }    }}

运行

先启动 Server,再运行 Client 。

这里写图片描述

这里写图片描述

原创粉丝点击