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

Java函数库实现网络通信:Socket编程实例

发布时间:2023-06-30 00:32:13

Socket是一个用于网络通信的标准编程接口,Java提供了Socket类来实现网络通信。通过Socket编程,可以实现客户端与服务器之间的数据传输。下面是一个Socket编程的实例。

首先,需要创建一个服务器端程序来监听指定的端口,等待客户端的连接请求。服务器端代码如下:

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

public class Server {
    public static void main(String[] args) {
        try {
            // 创建服务器端Socket,指定端口号
            ServerSocket serverSocket = new ServerSocket(8888);
            
            // 等待客户端的连接请求
            System.out.println("等待客户端的连接请求...");
            Socket socket = serverSocket.accept();
            System.out.println("客户端连接成功!");

            // 关闭服务器端Socket
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码首先创建了一个ServerSocket对象,指定端口号为8888。然后调用accept()方法等待客户端的连接请求,accept()方法是一个阻塞式方法,直到有客户端发起连接请求时才会继续执行。当客户端连接成功后,即可进行后续操作。

接下来,可以编写一个客户端程序来连接服务器并发送数据。客户端代码如下:

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

public class Client {
    public static void main(String[] args) {
        try {
            // 创建客户端Socket,指定服务器IP地址和端口号
            Socket socket = new Socket("localhost", 8888);
            
            // 获取输出流,向服务器发送数据
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write("Hello Server".getBytes());
            
            // 关闭客户端Socket
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码首先创建了一个Socket对象,指定服务器的IP地址为"localhost",端口号为8888。接着获取输出流,通过输出流向服务器发送数据。最后关闭客户端的Socket连接。

可以在服务器端的程序中接收并处理客户端发送的数据。下面的代码将在服务器端接收客户端发送的数据并打印出来:

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

public class Server {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(8888);
            System.out.println("等待客户端的连接请求...");
            Socket socket = serverSocket.accept();
            System.out.println("客户端连接成功!");

            // 接收客户端发送的数据
            InputStream inputStream = socket.getInputStream();
            byte[] buffer = new byte[1024];
            int length = inputStream.read(buffer);
            String message = new String(buffer, 0, length);
            System.out.println("收到客户端的消息:" + message);

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

上述代码在服务器端获取输入流,通过输入流读取来自客户端的数据。然后将数据转换为字符串并打印出来。

通过上述的Socket编程实例,可以实现客户端与服务器之间的简单数据传输。Socket编程是网络通信中常用的技术之一,可以用于实现各类网络应用。