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

Java中的网络编程函数:Socket和ServerSocket

发布时间:2023-06-13 22:23:32

Java的网络编程函数主要有Socket和ServerSocket。

1.Socket

Socket是用来连接网络中的进程的。它是一种套接字(Socket)编程方式,可以在两个不同的主机之间建立通信,以便于它们能够交换数据。

Socket通信需要有“客户端”和“服务器端”,客户端主要是向服务器发起请求,并接收服务器的响应;服务器端主要是接收客户端的请求,并给出响应。

Socket的使用基本步骤如下:

(1)创建Socket对象

客户端和服务器端都必须要创建一个Socket对象,来建立连接。

例如,创建一个连接到服务器的客户端Socket:

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

其中, 个参数代表服务器的IP地址,第二个参数代表服务器使用的端口号。

(2)获取输入输出流

Socket可以用来传输数据,但需要通过输入输出流来实现。一旦Socket对象创建成功,就可以通过它来获取输入输出流。如果是客户端的话,可以通过Socket的getInputStream()和getOutputStream()方法来获取输入输出流:

            InputStream is = socket.getInputStream();

            OutputStream os = socket.getOutputStream();

而如果是服务器端的话,则可以通过Socket的accept()方法来获取客户端的Socket对象,再通过这个Socket对象来获取它的输入输出流。

(3)数据的读写

Socket的数据读写也是通过输入输出流来实现的。可以通过InputStream的read()方法来读取数据,write()方法来写入数据;通过OutputStream的write()方法来写入数据,read()方法来读取数据。

例如,客户端向服务器传递数据可以使用如下代码:

            //创建Socket对象

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

            

            //获取输出流

            OutputStream os = socket.getOutputStream();

            //写入数据

            os.write("Hello,Server".getBytes());

            

            //获取输入流

            InputStream is = socket.getInputStream();

            //读取数据

            byte[] bytes = new byte[1024];

            int len = is.read(bytes);

            String str = new String(bytes, 0, len);

            System.out.println(str);

            

            //关闭输入输出流和Socket对象

            is.close();

            os.close();

            socket.close();

2.ServerSocket

ServerSocket是服务器端使用的套接字类别,用于监听客户端的请求并返回相应的响应。当创建一个ServerSocket对象时,它会占用一个指定的端口来等待客户端的连接请求。

ServerSocket主要用来监听客户端的连接请求,一旦有请求过来,它就会创建一个新的Socket对象来与客户端建立连接,使得服务器与客户端可以进行数据交换。而客户端也需要使用Socket类来与服务器建立连接。

ServerSocket的使用基本步骤如下:

(1)创建Socket对象

创建一个指定端口的ServerSocket对象,如下:

            ServerSocket serverSocket = new ServerSocket(8080);

(2)监听客户端的连接请求

服务器端使用ServerSocket类中的accept()方法来监听客户端的连接请求。这个方法会一直等待客户端的连接请求。

            Socket socket = serverSocket.accept();

当客户端连接成功时,accept()方法会返回一个Socket对象。

(3)数据的读写

一旦与客户端建立好连接,就可以像使用Socket的数据读写方式一样与客户端进行数据交换。

例如,服务器端接收客户端发送的数据可以使用如下代码:

            //创建ServerSocket对象

            ServerSocket serverSocket = new ServerSocket(8080);

            

            //等待客户端连接请求

            Socket socket = serverSocket.accept();

            

            //获取输入流

            InputStream is = socket.getInputStream();

            //读取数据

            byte[] bytes = new byte[1024];

            int len = is.read(bytes);

            String str = new String(bytes, 0, len);

            System.out.println(str);

            

            //获取输出流

            OutputStream os = socket.getOutputStream();

            //写入数据

            os.write("Hello,Client".getBytes());

            

            //关闭输入输出流和Socket对象

            is.close();

            os.close();

            socket.close();

总结

Java中的Socket和ServerSocket是网络编程中的重要类别,它们可以用来建立通信、传输数据等。其中,Socket主要用来客户端与服务器建立连接,而ServerSocket主要用来监听客户端的连接请求。在使用时需要注意,要保证客户端和服务器端的传输格式一致,同时要注意关闭相关的输入输出流和Socket对象。