美文网首页
Java基础学习 | TCP实现简单的C/S通信

Java基础学习 | TCP实现简单的C/S通信

作者: Jodi_7 | 来源:发表于2019-08-10 22:39 被阅读0次

TCP客户端TCPClient

通过java.net.Socket类创建客户端对象
官方文档介绍:此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。
构造方法:
Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。
成员方法:
OutputStream getOutputStream() 返回此套接字的输出流。
InputStream getInputStream() 返回此套接字的输入流。

使用步骤

  1. 创建Socket对象,通过构造方法指定服务器主机名和端口;
  2. 通过Socket对象的getOutputStream()获取套接字的输出流OutputStream对象;
  3. 通过OutputStream对象的write方法向服务器发送数据;
  4. 使用Socket对象的getInputStream()获取套接字的输入流InputStream对象;
  5. 通过InputStream对象的read方法读取服务器回发的数据;
  6. 释放资源(socket.close()) 关闭套接字。

代码实现

public static void main(String[] args) throws IOException {

        // 1. 创建Socket对象,通过构造方法指定服务器主机名和端口
        Socket socket = new Socket("127.0.0.1", 8888);

        // 2. 通过Socket对象的getOutputStream()获取套接字的输出流OutputStream对象
        OutputStream os = socket.getOutputStream();

        // 3. 通过OutputStream对象的write方法向服务器发送数据
        os.write("请求连接1".getBytes());

        // 5.使用Socket对象的getInputStream()获取套接字的输入流InputStream对象
        InputStream is = socket.getInputStream();

        // 6. 通过InputStream对象的read方法读取服务器回发的数据
        byte[] bytes = new byte[32];
        int len = is.read(bytes);  // len表示获取有效的字节数
        System.out.println(new String(bytes, 0, len));

        // 7. 释放资源(socket.close())  关闭套接字
        socket.close();
    }

注意

服务器需要先启动后,再启动客户端,否则会抛出异常
java.net.ConnectException: Connection refused: connect


异常截图.png

TCP服务端TCPServer

通过java.net.ServerSocket类来创建服务器对象
此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。
构造方法:
ServerSocket(int port) 创建绑定到特定端口的服务器套接字。
成员方法:
Socket accept() 侦听并接受到此套接字的连接。(服务器类没有Socket类,需求方法获取客户端的Socket对象)

使用步骤

  1. 创建ServerSocket对象,通过构造方法指定客户端连接端口
  2. 通过accept方法获取客户端的Socket对象
  3. 通过Socket对象的getInputStream()获取套接字的输出流InputStream对象
  4. 通过InputStream对象的read方法读取客户端发送的数据
  5. 通过Socket对象的getOutputStream()获取套接字的输出流OutputStream对象
  6. 通过OutputStream对象的write方法向客户端发送数据
  7. 释放资源,关闭套接字

代码实现

public static void main(String[] args) throws IOException {
        // 1. 创建ServerSocket对象,通过构造方法指定客户端连接端口
        ServerSocket serverSocket = new ServerSocket(8888);
        // 2. 通过accept方法获取客户端的Socket对象
        Socket socket = serverSocket.accept();
        // 3. 通过Socket对象的getInputStream()获取套接字的输出流InputStream对象
        InputStream is = socket.getInputStream();
        // 4. 通过InputStream对象的read方法读取客户端发送的数据
        byte[] bytes = new byte[32];
        int len = is.read(bytes);
        System.out.println(new String(bytes, 0, len));
        // 5. 通过Socket对象的getOutputStream()获取套接字的输出流OutputStream对象
        OutputStream os = socket.getOutputStream();
        // 6. 通过OutputStream对象的write方法向客户端发送数据
        os.write("连接成功".getBytes());
        // 7. 释放资源,关闭套接字
        socket.close();
        serverSocket.close();
    }

运行步骤、结果

先运行服务端,在启动客户端
服务器控制台输出

请求连接1

客户端控制台输出

连接成功

相关文章

  • Java基础学习 | TCP实现简单的C/S通信

    TCP客户端TCPClient 通过java.net.Socket类创建客户端对象官方文档介绍:此类实现客户端套接...

  • Java socket

    Java Socket实现基于TCP和UDP多线程通信Java Socket编程

  • Android | TCP的C(Java|Android)/S(

    案例GitHub地址 在博客Android | UDP的C/S通信实战案例的基础上,继续进行开发; 创建TCP服务...

  • Java开发学习之路

    Java开发的学习之路 基础知识 编程语言:Java Python C 基本算法 基本网络知识:TCP/IP HT...

  • WebSocket协议

    WebSocket是基于TCP的应用层协议,用于在C/S架构的应用中实现双向通信 WebSocket与Http的区...

  • java Socket编程(tcp篇)

    概述 关于网络的基础知识,请自行google,这里通过socket(tcp)来实现一个简单的对话。 Tcp协议的S...

  • 分布式-2-远程通信

    远程通信方式 RPC(Remote Procedure Call Protocol)C/S方式tcp协议,发送请求...

  • Java实现TCP通信

    TCP(Transmission Control Protocol),即传输控制协议。是一种面向连接的、可靠的、基...

  • Socket通信(基本格式)

    Socket通信是基于TCP/IP协议的通信。属于C/S结构(就是有客户端和移动端两部分的结构) 注解:TCP/I...

  • Java RPC

    Java 基于TCP协议实现的RPC简单示例 [文档] Java RPC.docx

网友评论

      本文标题:Java基础学习 | TCP实现简单的C/S通信

      本文链接:https://www.haomeiwen.com/subject/oypdjctx.html