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

网络编程中的JavaSocket函数

发布时间:2023-06-21 07:23:39

Java Socket是实现网络通信的一种基本方式。它在Java中提供了一种操作TCP/IP协议的方法。Java Socket可以用于客户端向服务器发送请求和服务器向客户端返回数据的通信。本文将介绍Java Socket相关的常用函数及其用途。

1. Socket()

Socket()函数用于创建一个新的Socket对象。通常会指定要连接的服务器的IP地址和端口号。例如,以下代码创建了一个Socket对象并连接到IP地址为127.0.0.1,端口号为8080的服务器:

Socket socket = new Socket("127.0.0.1", 8080);

2. getInputStream() 和 getOutputStream()

getInputStream()函数用于获取Socket对象的输入流,可以通过这个输入流读取服务器返回的数据。getOutputStream()函数用于获取Socket对象的输出流,可以通过这个输出流向服务器发送请求。例如,以下代码创建了一个Socket对象并向服务器发送一个字符串,然后从服务器读取返回的数据:

Socket socket = new Socket("127.0.0.1", 8080);
OutputStream outputStream = socket.getOutputStream();
outputStream.write("Hello, server!".getBytes());
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
    System.out.println(new String(buffer, 0, len));
}

3. close()

close()函数用于关闭Socket对象及其相关的流。它是在完成Socket通信后必须调用的函数。例如,以下代码创建了一个Socket对象并向服务器发送一个字符串,读取服务器返回的数据后关闭Socket对象:

Socket socket = new Socket("127.0.0.1", 8080);
OutputStream outputStream = socket.getOutputStream();
outputStream.write("Hello, server!".getBytes());
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
    System.out.println(new String(buffer, 0, len));
}
socket.close();

4. accept()

accept()函数用于在服务器端等待客户端的连接请求。当客户端连接到服务器时,accept()函数会返回一个新的Socket对象以进行后续的通信。例如,以下代码创建了一个ServerSocket对象并在循环中等待客户端的连接请求,每次接收到请求后创建一个新的Socket对象并与客户端进行通信:

ServerSocket serverSocket = new ServerSocket(8080);
while (true) {
    System.out.println("Waiting for client...");
    Socket socket = serverSocket.accept();
    System.out.println("Client connected: " + socket.getInetAddress().getHostAddress());
    InputStream inputStream = socket.getInputStream();
    OutputStream outputStream = socket.getOutputStream();
    byte[] buffer = new byte[1024];
    int len;
    while ((len = inputStream.read(buffer)) != -1) {
        System.out.println(new String(buffer, 0, len));
        outputStream.write("Hello, client!".getBytes());
    }
    socket.close();
}

5. bind()

bind()函数用于将Socket对象绑定到特定的IP地址和端口号。通常在服务器端使用该函数。例如,以下代码创建了一个ServerSocket对象并将其绑定到IP地址为127.0.0.1,端口号为8080的地址:

ServerSocket serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress("127.0.0.1", 8080));

6. connect()

connect()函数用于连接到指定的服务器IP地址和端口号。通常在客户端使用该函数。例如,以下代码创建了一个Socket对象并连接到IP地址为127.0.0.1,端口号为8080的服务器:

Socket socket = new Socket();
socket.connect(new InetSocketAddress("127.0.0.1", 8080));

7. setSoTimeout()

setSoTimeout()函数用于设置Socket对象的超时时间。如果在指定的时间内没有收到相应的数据,那么函数会抛出一个SocketTimeoutException异常。例如,以下代码创建了一个Socket对象并设置它的超时时间为5秒:

Socket socket = new Socket("127.0.0.1", 8080);
socket.setSoTimeout(5000);

以上是Java Socket的常用函数及其用途。Java Socket可以用于建立TCP/IP连接,实现客户端向服务器发送请求和从服务器接收数据的通信。在网络编程中,了解Java Socket的使用非常重要。