TCP

1.6、TCP

客服端

  1. 连接服务器 Socket

  2. 发送消息

package com.zheng.study02;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

//客户端
public class TcpClientDemo01 {
   public static void main(String[] args) {
       Socket socket=null;
       OutputStream os=null;

       try {
           //1.要知道服务器的地址,端口号
           InetAddress serverIp = InetAddress.getByName("127.0.0.1");
           int port=9999;
           //2.创建一个socket连接
           socket = new Socket(serverIp,port);
           //3.发送消息   IO流
           os = socket.getOutputStream();
           os.write("欢迎光临".getBytes());

      } catch (Exception e) {
           e.printStackTrace();
      }finally {
           if(socket!=null){
               try {
                   socket.close();
              } catch (IOException e) {
                   e.printStackTrace();
              }
          }

           if(os!=null){
               try {
                   os.close();
              } catch (IOException e) {
                   e.printStackTrace();
              }
          }
      }


  }
}

 

服务器

  1. 建立服务的端口 ServerSocket

  2. 等待用户的连接 accept

  3. 接收用户的消息

package com.zheng.study02;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

//服务端
public class TcpServletDemo01 {
   public static void main(String[] args) {

       ServerSocket serverSocket=null;
       Socket socket=null;
       InputStream is=null;
       ByteArrayOutputStream baos=null;
       try {
           //1.我得要有一个地址
           serverSocket = new ServerSocket(9999);

           while (true){
               //2.等待客户端连接过来
               socket = serverSocket.accept();
               //3.读取客户端的消息
               is = socket.getInputStream();

               //管道流
               baos = new ByteArrayOutputStream();
               byte[] buffer = new byte[1024];
               int len;
               while ((len=is.read(buffer))!=-1){
                   baos.write(buffer,0,len);
              }
               System.out.println(baos.toString());
          }


      } catch (IOException e) {
           e.printStackTrace();
      }finally {
           //关闭资源
           if (baos!=null){
               try {
                   baos.close();
              } catch (IOException e) {
                   e.printStackTrace();
              }
          }
           if (is!=null){
               try {
                   is.close();
              } catch (IOException e) {
                   e.printStackTrace();
              }
          }

           if(socket!=null){
               try {
                   socket.close();
              } catch (IOException e) {
                   e.printStackTrace();
              }
          }

           if(serverSocket!=null){
               try {
                   serverSocket.close();
              } catch (IOException e) {
                   e.printStackTrace();
              }
          }


      }


  }
}

 

文件上传

服务端

package com.zheng.study02;

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

public class TcpServletDemo02 {
   public static void main(String[] args) throws IOException {
       //1.创建一个端口
       ServerSocket serverSocket = new ServerSocket(9000);
       //2.监听客户端的连接
       Socket socket = serverSocket.accept();//阻塞式监听,会一直等待客户端连接
       //3.获取输入流
       InputStream is = socket.getInputStream();
       //4.文件输出
       FileOutputStream fos = new FileOutputStream(new File("receive"));
       byte[] buffer = new byte[1024];
       int len;
       while ((len=is.read(buffer))!=-1){
           fos.write(buffer,0,len);
      }
       //通知客户端接收完毕了
       OutputStream os = socket.getOutputStream();
       os.write("我接收完毕".getBytes());

       fos.close();
       is.close();
       socket.close();
       serverSocket.close();

  }
}

客服端

package com.zheng.study02;

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


public class TcpClientDemo02 {
   public static void main(String[] args) throws IOException {
       //1.创建一个socket连接
       Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 9000);
       //2.创建一个输出流
       OutputStream os = socket.getOutputStream();
       //3.读取文件
       FileInputStream fis = new FileInputStream(new File("1.png"));
       //4.写出文件
       byte[] buffer= new byte[1024];
       int len;
       while ((len=fis.read())!=-1){
           os.write(buffer,0,len);
      }

       //通知服务器,我已经结束
       socket.shutdownOutput();//我已经传输完了

       //确定服务器连接完毕,才能够断开连接
       InputStream inputStream = socket.getInputStream();
       ByteArrayOutputStream baos = new ByteArrayOutputStream();

       byte[] buffer2 = new byte[1024];
       int len2;
       while ((len2=inputStream.read(buffer2))!=-1){
           baos.write(buffer2,0,len2);
      }
       System.out.println(baos.toString());

       baos.close();
       inputStream.close();
       fis.close();
       os.close();
       socket.close();

  }
}

Tomcat

服务端

。自定义 S

。Tomcat服务器 S

客户端

。自定义 C

。浏览器 B

posted @ 2021-08-17 13:58  清钦  阅读(127)  评论(0)    收藏  举报