# Java TCP 编程

# 发送消息

# 服务端

package com.example.network.lesson06;

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

public class TCPServer {

    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        Socket socket = null;
        InputStream inputStream = null;
        ByteArrayOutputStream pipeStream = null;
        try {
            // 1. 创建一个 socket
            serverSocket = new ServerSocket(8080);
            // 2. 等待客户端连接
            socket = serverSocket.accept();
            // 3. 读取客户端的消息
            inputStream = socket.getInputStream();
            pipeStream = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len;
            while ((len = inputStream.read(buffer)) != -1) {
                pipeStream.write(buffer, 0, len);
            }
            System.out.println("接收消息");
            System.out.println(pipeStream.toString());

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                pipeStream.close();
                inputStream.close();
                socket.close();
                serverSocket.close();
                System.out.println("关闭");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}

# 客户端

package com.example.network.lesson06;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.nio.charset.StandardCharsets;

public class TCPClient {

    public static void main(String[] args) {
        Socket socket = null;
        OutputStream outputStream = null;
        try {
            // 1. 知道服务器地址
            InetAddress serverIP =  InetAddress.getByName("127.0.0.1");
            int port = 8080;
            // 2. 创建一个 socket 连接
            socket = new Socket(serverIP, port);
            // 3. 发送消息 IO 流
            outputStream = socket.getOutputStream();
            System.out.println("发送消息");
            outputStream.write("Hello".getBytes(StandardCharsets.UTF_8));

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                socket.close();
                outputStream.close();
                System.out.println("关闭");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

}

# 上传文件