欢迎访问宙启技术站
智能推送

Java网络编程函数:Socket通信的使用方法

发布时间:2023-06-19 11:53:40

Socket是Java中网络编程中最常用的通信方式,它可以实现客户端和服务端之间的数据传输。下面介绍Java中Socket通信的使用方法。

1. 创建Socket对象

在Java中,需要使用Socket对象来进行网络通信,如下所示:

Socket socket = new Socket(String host, int port);

其中,host为服务端的IP地址,port为服务端的端口号。

2. 创建输入输出流

使用Socket对象的getInputStream()和getOutputStream()方法来创建输入输出流,如下所示:

InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();

3. 发送数据

使用输出流向服务端发送数据,如下所示:

String message = "Hello Server!";
os.write(message.getBytes());

其中,getBytes()方法将字符串转换为字节数组。

4. 接收数据

使用输入流从服务端接收数据,如下所示:

byte[] buffer = new byte[1024];
int length = is.read(buffer);
String message = new String(buffer, 0, length);

其中,read()方法将数据读入缓冲区,并返回读入数据的字节数,String()将字节数组转换为字符串。

5. 关闭Socket连接

完成数据传输后,需要关闭Socket连接,如下所示:

socket.close();

完整代码示例:

客户端代码:

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

public class Client {
    public static void main(String[] args) {
        Socket socket = null;

        try {
            // 连接服务端
            socket = new Socket("127.0.0.1", 8888);

            // 获取输出流
            OutputStream os = socket.getOutputStream();

            // 发送数据
            String message = "Hello Server!";
            os.write(message.getBytes());

            // 获取输入流
            InputStream is = socket.getInputStream();

            // 接收数据
            byte[] buffer = new byte[1024];
            int length = is.read(buffer);
            String receiveMessage = new String(buffer, 0, length);
            System.out.println("Receive message from server: " + receiveMessage);

            // 关闭连接
            socket.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

服务端代码:

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

public class Server {
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        Socket socket = null;

        try {
            // 创建服务端Socket对象
            serverSocket = new ServerSocket(8888);

            while (true) {
                // 监听客户端连接
                socket = serverSocket.accept();

                // 获取输入流
                InputStream is = socket.getInputStream();

                // 接收数据
                byte[] buffer = new byte[1024];
                int length = is.read(buffer);
                String message = new String(buffer, 0, length);
                System.out.println("Receive message from client: " + message);

                // 获取输出流
                OutputStream os = socket.getOutputStream();

                // 发送数据
                String responseMessage = "Hello Client!";
                os.write(responseMessage.getBytes());

                // 关闭连接
                socket.close();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上就是Java中Socket通信的使用方法,使用Socket可以实现客户端和服务端之间的数据传输。