TCP

客户端

  1. 建立连接服务器的socket
  2. 向服务端发送消息
  3. 关闭连接
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

//TCP客户端
public class TcpClientDemo {
    public static void main(String[] args) {
        //与服务端创建TCP链接
        Socket socket = null;
        OutputStream os = null;
        //1.获取服务端IP地址与端口
        try {
            InetAddress serverIP = InetAddress.getByName("127.0.0.1");
            int port = 9999;
            //2.创建一个socket连接
            socket = new Socket(serverIP, port);
            //3.发送消息
            os = socket.getOutputStream();
            os.write("Java网络编程".getBytes());
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            //关闭资源
            if(socket!=null)
            {
                try {
                    socket.close();
                } catch (IOException e){
                    e.printStackTrace();
                }
            }
        }

    }

}

服务端

  1. 建立服务端套接字ServerSocket
  2. 等待用户连接accept
  3. 接受客户端发送的消息
  4. 关闭连接
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

//TCP服务端
public class TcpServerDemo {
    public static void main(String[] args) {
        ServerSocket severSocket = null;
        Socket socket = null;
        InputStream is = null;
        ByteArrayOutputStream byteArrayOutputStream = null;
        //创建服务端Socket
        try {
            //1.创建地址
            severSocket = new ServerSocket(9999);
            //2.监听客户端连接请求
            socket = severSocket.accept();
            //3.读取客户端发送的消息
            is = socket.getInputStream();
            //4.创建管道流输出内容
            byteArrayOutputStream = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len;
            while((len=is.read(buffer))!=-1){
                byteArrayOutputStream.write(buffer,0,len);
            }
            System.out.println(byteArrayOutputStream.toString());

        } catch (IOException e){
            e.printStackTrace();
        } finally {
            //5.关闭资源
            try {
                byteArrayOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                severSocket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

运行结果:服务端收到客户端消息,并打印出来

Java网络编程

Process finished with exit code 0
posted @ 2020-05-26 10:35  Kuris101  阅读(114)  评论(0)    收藏  举报