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

Java中网络通信函数的使用与示例

发布时间:2023-05-26 10:32:10

Java中的网络通信主要是通过Socket和ServerSocket类实现的。Socket类可以建立一个客户端连接,而ServerSocket类则可以在服务器端监听连接请求。以下是一些常用的网络通信函数及其示例。

Socket类的常用函数

1.构造函数:Socket(String host, int port)

用于创建一个客户端套接字,并指定连接的主机和端口号。例如:

Socket clientSocket = new Socket("localhost", 8080);

2.构造函数:Socket(InetAddress address, int port)

用于创建一个客户端套接字,并指定连接的IP地址和端口号。例如:

InetAddress serverAddr = InetAddress.getByName("192.168.1.1");
Socket clientSocket = new Socket(serverAddr, 8080);

3.函数:InputStream getInputStream()

用于获取输入流,即从服务器读取数据。例如:

InputStream in = clientSocket.getInputStream();
byte[] buffer = new byte[1024];
int len = in.read(buffer);

4.函数:OutputStream getOutputStream()

用于获取输出流,即向服务器发送数据。例如:

OutputStream out = clientSocket.getOutputStream();
byte[] data = "Hello, server".getBytes("UTF-8");
out.write(data);

5.函数:void close()

用于关闭套接字。例如:

clientSocket.close();

ServerSocket类的常用函数

1.构造函数:ServerSocket(int port)

用于创建一个服务器套接字,并指定监听的端口号。例如:

ServerSocket serverSocket = new ServerSocket(8080);

2.函数:Socket accept()

用于等待并接受客户端的连接,返回一个新的Socket对象。例如:

Socket clientSocket = serverSocket.accept();

3.函数:int getLocalPort()

用于获取服务器监听的端口号。例如:

int port = serverSocket.getLocalPort();

4.函数:void close()

用于关闭服务器套接字。例如:

serverSocket.close();

示例:

客户端发送数据:

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

public class Client {
    public static void main(String[] args) {
        try {
            Socket clientSocket = new Socket("localhost", 8080);
            OutputStream out = clientSocket.getOutputStream();
            byte[] data = "Hello, server".getBytes("UTF-8");
            out.write(data);
            clientSocket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

服务器接收数据:

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

public class Server {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(8080);
            Socket clientSocket = serverSocket.accept();
            InputStream in = clientSocket.getInputStream();
            byte[] buffer = new byte[1024];
            int len = in.read(buffer);
            System.out.println(new String(buffer, 0, len, "UTF-8"));
            clientSocket.close();
            serverSocket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

以上是Java中常见的网络通信函数和示例。在实际开发中,也可以使用Java提供的高级网络通信框架,如Netty和Spring Boot等。