Java Socket编程是一种基于网络通信的编程方式,通过Socket可以实现两台计算机之间的数据传输和通信。在Java中,可以使用java.net包提供的Socket类和ServerSocket类来实现Socket编程。

在Socket编程中,一台计算机可以充当服务器,另一台计算机可以充当客户端。服务器通过ServerSocket类监听指定的端口,等待客户端的连接请求。当客户端发起连接请求时,服务器接受连接请求并创建一个Socket对象来与客户端进行通信。

客户端通过Socket类连接服务器的IP地址和端口号,与服务器建立连接后可以通过输入输出流进行数据的发送和接收。

Socket编程可以用于实现各种网络应用,包括Web服务器、聊天程序、文件传输等。它可以在局域网或广域网中进行通信,并且支持TCP和UDP两种传输协议。

以下是一个简单的Java Socket编程示例,演示了一个简单的客户端和服务器的通信过程:

服务器端代码:

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

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(8080);
        } catch (IOException e) {
            System.err.println('Could not listen on port: 8080.');
            System.exit(1);
        }

        Socket clientSocket = null;
        try {
            clientSocket = serverSocket.accept();
        } catch (IOException e) {
            System.err.println('Accept failed.');
            System.exit(1);
        }

        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        String inputLine, outputLine;

        while ((inputLine = in.readLine()) != null) {
            System.out.println('Received: ' + inputLine);
            outputLine = 'Server response: ' + inputLine;
            out.println(outputLine);
            if (outputLine.equals('Bye.')) 
                break;
        }

        out.close();
        in.close();
        clientSocket.close();
        serverSocket.close();
    }
}

客户端代码:

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

public class Client {
    public static void main(String[] args) throws IOException {
        Socket socket = null;
        PrintWriter out = null;
        BufferedReader in = null;

        try {
            socket = new Socket('localhost', 8080);
            out = new PrintWriter(socket.getOutputStream(), true);
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        } catch (UnknownHostException e) {
            System.err.println('Unknown host: localhost.');
            System.exit(1);
        } catch (IOException e) {
            System.err.println('Couldn't get I/O for the connection to: localhost.');
            System.exit(1);
        }

        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
        String userInput;

        while ((userInput = stdIn.readLine()) != null) {
            out.println(userInput);
            System.out.println('Server response: ' + in.readLine());
            if (userInput.equals('Bye.')) 
                break;
        }

        out.close();
        in.close();
        stdIn.close();
        socket.close();
    }
}

上述示例中,Server类充当服务器端,Client类充当客户端。服务器监听8080端口,客户端连接到localhost的8080端口。客户端通过控制台输入向服务器发送消息,服务器接收到消息后返回相同的消息加上'Server response: '前缀。当客户端输入'Bye.'时,通信结束。

以上是一个简单的Java Socket编程示例,通过这种方式可以实现更复杂的网络应用程序。


原文地址: https://www.cveoy.top/t/topic/pilV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录