欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TCP通信客户端和服务端简单代码实现

程序员文章站 2022-06-06 08:33:53
...

客户端Socket中的方法:

  • Socket(InetAddress address, int port)
  •       创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
    
  • InputStream getInputStream()
  •       返回此套接字的输入流。
    
  • OutputStream getOutputStream()
  •       返回此套接字的输出流
    

InputStream中方法:

  • int read(byte[] b)
  •      从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
    

客户端程序

 package JAVA_Test7;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class TCPClient {
    public static void main(String[] args) throws IOException {
        //1.创建一个客户端对象Socket,构造方法绑定ip地址和端口号
        Socket socket = new Socket("127.0.0.1",8888);
        //2.使用Socket中的方法获得OutputStream对象
        OutputStream os = socket.getOutputStream();
        //3.使用字节输出流OutputStream中的Write方法发送数据
        os.write("你好服务器".getBytes());
        //4.使用Socket对象中的方法getInputStream()获得InputStream
        InputStream is = socket.getInputStream();
        //5.读取信息
        byte bytes[] = new byte[1024];
        int len = is.read(bytes);
        System.out.println(new String(bytes,0,len));

        socket.close();
    }
}
  • TCP服务器端ServerSocket
    *ServerSocket(int port)
  •       创建绑定到特定端口的服务器套接字。
    
  • Socket accept()
  •       侦听并接受到此套接字的连接
    

流程

  • 1.创建服务器ServerSocket对象
  • 2.使用ServerSocket中的accept方法获得请求的客户端Socket对象
  • 3.使用Socket中的方法获得InputStream网络字节输入流
  • 4.使用InputStream中的read()方法,读取数据
  • 5.使用Socket中的方法获得OutputStream输出流
  • 6.使用OutputStream中的write()方法,给客户端发送数据

服务端程序

package JAVA_Test7;

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


public class TCPServer {
    public static void main(String[] args) throws IOException {
        //1.创建服务器ServerSocket对象
        ServerSocket serverSocket = new ServerSocket(8888);
        //2.使用ServerSocket中的accept方法获得请求的客户端Socket对象
        Socket socket = serverSocket.accept();
        //3.使用Socket中的方法获得InputStream网络字节输入流
        InputStream is = socket.getInputStream();
        //4.使用InputStream中的read()方法,读取数据
        byte []bytes = new byte[1024];
        int len = is.read(bytes);
        System.out.println(new String(bytes,0,len));
        //5.使用Socket中的方法获得OutputStream输出流
        OutputStream os = socket.getOutputStream();

        //6.使用OutputStream中的write()方法,给客户端发送数据
        os.write("收到谢谢".getBytes());

        socket.close();
        serverSocket.close();
    }
}