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

Java中的Socket编程函数用法详解

发布时间:2023-06-10 14:50:11

Java中的Socket编程函数是一组用于与其他网络设备进行通信的API函数。 Socket编程函数是Java提供的一种网络编程方法。它主要用于创建网络应用程序,使应用程序能够向其他计算机发送和接收数据。在本文中,我们将详细介绍Java Socket编程函数的用法。

创建Socket

要创建一个Socket,我们需要知道服务器的IP地址和端口号。使用Java Socket编程函数中的Socket类的构造函数可以创建一个Socket对象。构造函数具有以下格式:

public Socket(String host, int port) throws IOException

其中,host是服务器的IP地址,port是服务器的端口号。如果连接成功,则返回一个Socket对象,否则会抛出IOException异常。

例如,要连接到服务器IP地址为192.168.1.1,端口号为8080的服务器,可以使用以下代码创建一个Socket对象:

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

发送数据

在Java Socket编程中,我们可以使用Socket类中的OutputStream类来发送数据。OutputStream类提供了以下4个方法来发送数据:

1. write(byte[] b):将字节数组b中的所有字节写入输出流。

byte[] data = "Hello".getBytes();
OutputStream os = socket.getOutputStream();
os.write(data);

2. write(byte[] b, int off, int len):从字节数组b的偏移量off开始,将len个字节写入输出流。

byte[] data = "Hello".getBytes();
OutputStream os = socket.getOutputStream();
os.write(data, 1, 3); //将"ell"写入输出流

3. write(int b):将一个字节写入输出流。

OutputStream os = socket.getOutputStream();
os.write('H'); //将'H'写入输出流

4. flush():刷新输出流。

OutputStream os = socket.getOutputStream();
os.write('H'); //将'H'写入输出流
os.flush();

接收数据

在Java Socket编程中,我们可以使用Socket类中的InputStream类来接收数据。InputStream类提供了以下3个方法来接收数据:

1. read():从输入流中读取一个字节,并返回该字节的整数值(0~255),如果已经达到流的末尾,则返回-1。

InputStream is = socket.getInputStream();
int data = is.read(); //读取一个字节
if(data != -1){
    System.out.println("接收到的数据为:" + (char)data);
}

2. read(byte[] b):从输入流中读取最多b.length个字节,并将其存储在字节数组b中。返回实际读取的字节数。

byte[] buffer = new byte[1024];
InputStream is = socket.getInputStream();
int len = is.read(buffer); //读取数据并存储在buffer中
if(len != -1){
    String data = new String(buffer, 0, len);
    System.out.println("接收到的数据为:" + data);
}

3. read(byte[] b, int off, int len):从输入流中读取最多len个字节,并将其存储在字节数组b中的从偏移量 off开始的位置处。返回实际读取的字节数。

byte[] buffer = new byte[1024];
InputStream is = socket.getInputStream();
int len = is.read(buffer, 1, 3); //读取3个字节并存储在buffer[1]~buffer[3]中
if(len != -1){
    String data = new String(buffer, 0, len);
    System.out.println("接收到的数据为:" + data);
}

关闭Socket

在Java Socket编程中,关闭Socket需要使用Socket类中的close()方法。关闭Socket将释放由它占用的资源,并阻止任何尝试使用此Socket的进一步通信。关闭Socket并不会立即中止连接,而是会触发终止序列,在终止序列完成后,才会真正中止连接。以下是关闭Socket的示例代码:

socket.close();

以上就是Java Socket编程函数的基本用法,通过学习它,可以轻松地创建网络应用程序,并实现网络数据的发送和接收。