如何使用Java网络编程函数?
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开发等功能。
