1.如何利用Socket进行连接
    TCP(协议需要深入研究 特点 三次握手 四次挥手)
    基于字节型流执行操作

    服务端ServerSocket
    客户端Socket

    2.如何利用流来进行通信
    InputStream/OutputStream
    InputStreamReader
    BufferedReader/PrintWriter

    1. package server;
    2. import java.io.*;
    3. import java.net.ServerSocket;
    4. import java.net.Socket;
    5. //服务器
    6. public class Server {
    7. public static void main(String[] args){
    8. try{
    9. //1.创建一个socket对象
    10. ServerSocket server=new ServerSocket(8888);
    11. //2.等待客户端过来连接
    12. Socket socket= server.accept();//同意 接收
    13. OutputStream os= socket.getOutputStream();//字节流
    14. PrintWriter writer=new PrintWriter(os);//字符流
    15. writer.println("连接上了");
    16. writer.flush();
    17. //服务端读取客户端消息
    18. InputStream is= socket.getInputStream();
    19. InputStreamReader isr=new InputStreamReader(is);
    20. BufferedReader br=new BufferedReader(isr);
    21. String value= br.readLine();
    22. System.out.println(value);
    23. }catch (Exception e){
    24. e.printStackTrace();
    25. }
    26. }
    27. }
    1. package client;
    2. import java.io.*;
    3. import java.net.Socket;
    4. //客户端
    5. public class Client {
    6. public static void main(String[] args){
    7. try{
    8. //1.主动发起访问(服务器在哪,服务期开放端口是多少)
    9. Socket socket=new Socket("localhost",8888);
    10. //如果socket对象成功创建出来,就代表与服务器连接成功了
    11. InputStream is= socket.getInputStream();//字节流
    12. InputStreamReader isr=new InputStreamReader(is);//字符流,但不能读取一行
    13. BufferedReader br=new BufferedReader(isr);//可以读取一行的字符流
    14. String value= br.readLine();//读取服务器发给我的消息
    15. System.out.println(value);
    16. //客户端回写一个消息
    17. OutputStream os= socket.getOutputStream();
    18. PrintWriter pw=new PrintWriter(os);
    19. pw.println("我知道连接上了");
    20. pw.flush();
    21. }catch (Exception e){
    22. e.printStackTrace();
    23. }
    24. }
    25. }

    QQ录屏20210531190830.mp4 (5.67MB)