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

如何使用Java网络编程函数?

发布时间:2023-06-14 23:07:00

Java是一个只有良好Java网络编程的平台。网络编程是Java编程必备的技能,对于Web开发与数据交互等都非常的重要。Java网络编程相关的函数包括ServerSocket、Socket、InetAddress、URL、URLConnection、HttpURLConnection等。下面就具体介绍这些函数的使用。

1、ServerSocket

ServerSocket类是建立TCP服务器程序的基础类之一。服务器程序在等待客户机的连接时使用这个类。函数列表如下:

ServerSocket(int port):bind一个本地IP地址和端口号,并监听这个端口,准备接收一个消息请求。

Socket accept():如果有客户端请求,则返回与客户端连接的Socket对象。

服务器端代码示例:

public class MyServer{
    public static void main(String[] args) throws Exception{
        //创建ServerSocket对象
        ServerSocket ss = new ServerSocket(8888);
        //循环等待客户端连接
        while(true){
            //获取客户端连接
            Socket s = ss.accept();
            //打印客户端地址
            System.out.println(s.getInetAddress().getHostAddress());
            //关闭socket
            s.close();
        }
    }
}

2、Socket

Socket类是TCP客户端程序的基础类之一, 它是与服务器进行通信时的工具类。函数列表如下:

Socket(String host,int port):用来对指定地址,指定端口建立TCP连接

OutputStream getOutputStream():返回连接到此socket的输出流对象,负责数据输出

InputStream getInputStream():返回连接到此socket的输入流对象,负责数据输入

Void close():关闭socket。

客户端代码示例:

public class MyClient{
    public static void main(String[] args) throws Exception{
        //创建Socket对象
        Socket s = new Socket("localhost",8888);
        //获取输出流对象
        OutputStream os = s.getOutputStream();
        //输出数据
        os.write("hello world".getBytes());
        //获取输入流对象
        InputStream is = s.getInputStream();
        byte[] b=new byte[1024];
        int len = is.read(b);
        //打印接收到的数据
        System.out.println(new String(b,0,len));
        //关闭连接
        s.close();
    }
}

3、InetAddress

InetAddress类在java.net包中,它表示IP地址的类,可以使用IP地址表示主机名或域名。函数列表如下:

public static InetAddress getByName(String name):确定主机名称的IP地址

public String getHostAddress():返回IP地址的字符串表示形式

public String getHostName():获取由该地址表示的域名

示例代码:

public class InetAddressDemo {
    public static void main(String[] args) throws Exception {
        InetAddress address = InetAddress.getByName("www.baidu.com");
        System.out.println(address.getHostName());  //输出域名
        System.out.println(address.getHostAddress());   //输出IP地址
    }
}

4、URL

URL(Uniform Resource Locator)统一资源定位器,它是互联网上定位资源的标准方式。Java中提供了URL类来操作统一资源定位符,其基本的使用方法如下:

URL(String spec):根据指定的完整URL字符串创建一个URL。

URLConnection openConnection():打开URL的连接,并返回URLConnection对象

示例代码:

public class URLDemo {
    public static void main(String[] args) throws Exception {
        URL url = new URL("http://www.baidu.com"); 
        URLConnection urlConnection = url.openConnection();  //打开URL的连接
        InputStream inputStream = urlConnection.getInputStream();   //获取输入流
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); //将InputStreamReader转换为BufferedReader
        String s = null;
        while ((s=bufferedReader.readLine())!=null) {
            System.out.println(s);//输出网页内容
        } 
        bufferedReader.close();//关闭流
        inputStream.close();
    }
}

5、URLConnection

URLConnection是java.net包中的抽象类,它表示应用程序和URL之间的通信链接。它主要用于访问HTTP URL。URLConnection提供了与HTTP协议相关的标准方法,比如GET、POST、HEAD等。

示例代码:

public class URLConnectionDemo {
    public static void main(String[] args) throws Exception {
        URL url = new URL("http://www.baidu.com"); 
        URLConnection urlConnection = url.openConnection();  //打开URL的连接
        urlConnection.connect();  //创建实际的连接
        Map<String, List<String>> headerFields = urlConnection.getHeaderFields();
        for (String key : headerFields.keySet()) {
            System.out.println(key + ": " + headerFields.get(key));//输出响应头信息
        }
        urlConnection.getInputStream().close();//关闭输入流
    }
}

6、HttpURLConnection

HttpURLConnection是URLConnection的一个子类,它增加了许多HTTP协议专有的支持。它比URLConnection更加方便和易用,常用的方法有GET、POST、HEAD、PUT、DELETE等,可以用来执行标准的HTTP/1.1请求。

示例代码:

public class HttpURLConnectionDemo {
    public static void main(String[] args) throws Exception {
        URL url = new URL("http://www.baidu.com"); 
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();  //打开URL的连接
        urlConnection.setRequestMethod("GET");  //设置请求方法
        urlConnection.connect();  //创建实际的连接
        Map<String, List<String>> headerFields = urlConnection.getHeaderFields();
        for (String key : headerFields.keySet()) {
            System.out.println(key + ": " + headerFields.get(key));//输出响应头信息
        }
        urlConnection.getInputStream().close();//关闭输入流
        urlConnection.disconnect();//关闭HTTP连接
    }
}

综上所述,Java网络编程是Java编程中非常重要的部分,Java中提供了大量的网络编程类和函数,使我们能够很方便地实现网络通信、Web开发等功能。