1. 程式人生 > >一、一個簡單的socket通訊例項(TCP)

一、一個簡單的socket通訊例項(TCP)

 

1.服務端程式碼

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

/**
 * 類功能描述:先啟動伺服器端,再啟動客戶端
 *
 * @author:***
 * @createTime:2018/11/5 16:02
 */
public class Server {

    public static void main(String[] args) {
        try {
            //1.建立伺服器socket  指定監聽埠
            ServerSocket serverSocket = new ServerSocket(18080);
            //2.呼叫accept()開始監聽,等待客戶的連線
            System.out.println("---------伺服器即將啟動,等待客戶端連線---------");
            Socket socket = serverSocket.accept();
            //3.讀取客戶端傳送資訊
            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            System.out.println("接收到客戶端傳送的訊息為:" + br.readLine());
            socket.shutdownInput();
            //4.推送客戶端請求
            PrintWriter pw = new PrintWriter(socket.getOutputStream());
            pw.write("response");
            pw.flush();
            socket.shutdownOutput();
            //5.關閉連線
            br.close();
            pw.close();
            socket.close();
            serverSocket.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

 2.客戶端程式碼

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

/**
 * 類功能描述:客戶端
 *
 * @author:***
 * @createTime:2018/11/5 16:03
 */
public class Client {

    public static void main(String[] args) {
        try {
            //1.建立客戶端socket,指定伺服器地址和埠
            Socket socket = new Socket("127.0.0.1", 18080);
            //2.向伺服器傳送資訊
            PrintWriter pw = new PrintWriter(socket.getOutputStream());
            pw.write("request");
            pw.flush();
            socket.shutdownOutput();
            //3.讀取伺服器推送資訊
            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            System.out.println("接收到伺服器推送的訊息為:" + br.readLine());
            socket.shutdownInput();
            //4.關閉連線
            br.close();
            pw.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}