0
点赞
收藏
分享

微信扫一扫

Java 网络编程系列③ -- UDP网络编程 和 URL网络编程


目录

  • ​​UDP网络通信​​
  • ​​DatagramSocket 类的常用方法​​
  • ​​DatagramPacket类的常用方法​​
  • ​​UDP网络通信实例​​
  • ​​URL编程​​
  • ​​URL网络编程实现Tomcat服务端数据下载​​

UDP网络通信

①类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议网络程序。
②UDP数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。(跟TCP是完全不一样的,TCP还要三次握手四次挥手的反复确认,而UDP则随便发,故它的效率很高。这也说明了在TCP网络通信中先启动客户端会抛异常,而在UDP网络通信种先启动客户端是可以的)
③DatagramPacket 对象封装了UDP数据报,数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号
④UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接。如同发快递包裹一样。

DatagramSocket 类的常用方法

Java 网络编程系列③ -- UDP网络编程 和 URL网络编程_网络通信

DatagramPacket类的常用方法

Java 网络编程系列③ -- UDP网络编程 和 URL网络编程_java_02

UDP网络通信实例

简单了解即可,在javaweb中会详细讲解。
代码实现:

//发送端
@Test
public void sender() throws IOException {

DatagramSocket socket = new DatagramSocket();

String str = "我是UDP方式发送的信息";
byte[] data = str.getBytes();
InetAddress inet = InetAddress.getLocalHost();
DatagramPacket packet = new DatagramPacket(data,0,data.length,inet,9090);

socket.send(packet);

socket.close();

}
//接收端
@Test
public void receiver() throws IOException {

DatagramSocket socket = new DatagramSocket(9090);

byte[] buffer = new byte[100];
DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);

socket.receive(packet);

System.out.println(new String(packet.getData(),0,packet.getLength()));

socket.close();
}

URL编程

URL(Uniform Resource Locator):统一资源定位符,它表示 Internet 上某一资源的地址。它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。通过 URL 我们可以访问 Internet 上的各种网络资源,比如最常见的 www,ftp 站点。浏览器通过解析给定的 URL 可以在网络上查找相应的文件或其他资源。

URL的基本结构由5部分组成:
<传输协议>://<主机名>:<端口号>/<文件名>#片段名?参数列表
例如:
​​​ http://localhost:8080/examples/beauty.jpg?username=Tom​​

为了表示URL,java.net 中实现了类 URL。我们可以通过下面的构造器来初始化一个 URL 对象:

  • public URL (String spec):通过一个表示URL地址的字符串可以构造一个URL对象。例如:URL url = new URL (“http://www. baidu.com/”);
  • public URL(URL context, String spec):通过基 URL 和相对 URL 构造一个URL 对象。例如:URL downloadUrl = new URL(url, “download.html")
  • public URL(String protocol, String host, String file)例如:new URL(“http”, “www.baidu.com”, “download. html");
  • public URL(String protocol, String host, int port, String file)例如: URL gamelan = new URL(“http”, “www.baidu.com”, 80, “download.html")

URL类的构造器都声明抛出非运行时异常,必须要对这一异常进行处理,通常是用 try-catch 语句进行捕获。

一个URL对象生成后,其属性是不能被改变的,但可以通过它给定的方法来获取这些属性:
①public String getProtocol( ) 获取该URL的协议名
②public String getHost( ) 获取该URL的主机名
③public String getPort( ) 获取该URL的端口号
④public String getPath( ) 获取该URL的文件路径
⑤public String getFile( ) 获取该URL的文件名
⑥public String getQuery( ) 获取该URL的查询名

URL网络编程实现Tomcat服务端数据下载

代码实现:

public static void main(String[] args) {

HttpURLConnection urlConnection = null;
InputStream is = null;
FileOutputStream fos = null;
try {
URL url = new URL("http://localhost:8080/examples/beauty.jpg");

urlConnection = (HttpURLConnection) url.openConnection();

urlConnection.connect();

is = urlConnection.getInputStream();
fos = new FileOutputStream("day10\\beauty3.jpg");

byte[] buffer = new byte[1024];
int len;
while((len = is.read(buffer)) != -1){
fos.write(buffer,0,len);
}

System.out.println("下载完成");
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭资源
if(is != null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fos != null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(urlConnection != null){
urlConnection.disconnect();
}
}


举报

相关推荐

0 条评论