1. 程式人生 > >PKI學習之路(一)------------------------java實現簡單的socket通訊

PKI學習之路(一)------------------------java實現簡單的socket通訊

專案地址:https://github.com/gongxianshengjiadexiaohuihui/PKI

關於什麼是socket通訊,我會寫一篇部落格去敘述

這次我們主要實現client和server通過socket進行通訊

server程式碼

package com.ggp.server;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @ClassName Server
 * @Description TODO
 * @Author Mr.G
 * @Date 2018/11/29 9:43
 * @Version 1.0
 */
public class Server extends Thread {

    private  Socket socket;
    private ServerSocket serverSocket;

    public Server(int port)throws Exception{
        serverSocket = new ServerSocket(port);
    }

    @Override
    public void run() {

        while (this.isAlive()) {
            try {
                socket = serverSocket.accept();
                BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                PrintWriter writer = new PrintWriter(socket.getOutputStream());
                String data = reader.readLine();
                writer.println(data);
                writer.close();
                socket.close();
            } catch (IOException e) {

            }
        }
    }
    public static void main(String[] args) throws Exception{
              new Server(28888).start();
    }
}

開闢一條執行緒初始化serversocket,並監聽28888埠

socket = serverSocket.accept();

這句程式碼是阻塞的,只有監聽到客戶端發來的訊息,才會執行下面的程式碼

功能:

接受客戶端發來的資訊,並把資訊返回給客戶端

 

client程式碼

package com.ggp.client;

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

/**
 * @ClassName Client
 * @Description TODO
 * @Author Mr.G
 * @Date 2018/11/29 9:55
 * @Version 1.0
 */
public class Client {
    public static void main(String[] args) throws Exception{
        Socket socket = new Socket("127.0.0.1", 28888);

        PrintWriter writer = new PrintWriter(socket.getOutputStream());
        BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        writer.println("hello");
        writer.flush();
        System.out.println(reader.readLine());
        socket.close();
    }

}

功能:

初始化一個socket ,配置  要傳送伺服器的地址和埠號

傳送內容,列印伺服器返回的內容

結果