首页 / JAVA / java-网络编程入门
java-网络编程入门
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-网络编程入门,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5234字,纯文字阅读大概需要8分钟。
内容图文
![java-网络编程入门](/upload/InfoBanner/zyjiaocheng/1088/bd882857e2ce4a039eb108524a8956d6.jpg)
导读:
1.网络:
将不同区域的计算机群和外部设备通过通信设备组成的网络集群,按大小可分为局域网,城域网,广域网(互联网)。
2.地址:
ip地址:确定网络上的一个绝对地址,位置->相当于房子的地址
3.端口号:
用于区分计算机软件->相当于房子的房门号 ->2个字节 0-65535,共65536个端口号
(1)在同一个协议下端口号不可重复,不同协议下可以重复
(2)1024以下的尽量避免使用
4.资源定位:
URL统一资源定位符:URI->统一资源
5.数据的传输
(1)协议:
1)TCP:类似电话,三次握手,面向连接,安全可靠,效率低下,基于字节流
2)UDP:类似短信 ,面向无连接,效率高,数据可能丢失
(2)传输:
1)先封装
2)后拆封
相关类:
1.InetAddress(封装计算机的IP地址和DNS,没有端口) ->InetSocketAddress
(1)方法:
getHostAddress()返回IP地址
getHostName()返回域名/本机为计算机名
2.URL
由四部分组成:协议 ->存放资源的主机域名 ->端口号->资源文件名
(1)创建:
URL url=new URL(String url);绝对路径
URL url=new URL(URL context,String url);相对路径
(2)方法:
URL url=new URL("https://piaofang.maoyan.com/dashboard?date=2019-01-02");
System.out.println("协议:"+url.getProtocol());
System.out.println("存放资源的主机域名:"+url.getHost());
System.out.println("端口号:"+url.getPort());
System.out.println("资源文件名:"+url.getFile());
System.out.println("参数:"+url.getQuery());
System.out.println("锚点:"+url.getRef());
3.TCP:ServerSocket ->Socket
4.UDP:DatagramSocket ->DatagramPacket
(1)客户端:
1)创建客户端:DatagramSocket +指定端口
2)准备数据 : 字节数组
3)打包: DatagramPacket + 服务器地址+端口
4)发送:
5)释放资源:
(2)服务器端:
1)创建服务端: DatagramSocket +指定端口
2)准备接收容器: 字节数组 封装 DatagramPacket
3)封装成包:-》接收数据
4)分析:
5)释放资源:
上代码了解一下:
1.InetAddress
1 package com.etc; 2 3 import java.net.InetAddress; 4 import java.net.InetSocketAddress; 5 import java.net.UnknownHostException; 6 7 8 public class InetDemo { 9 public static void main(String[] args) throws UnknownHostException { 1011/*InetAddress ip=InetAddress.getLocalHost();两种方法均可以获得指定的主机名对应的IP地址*/12 InetAddress ip=InetAddress.getByName("逐梦青空"); 13//本机名称14 System.out.println(ip.getHostName()); 15//获取的是 IPv4 地址16 System.out.println(ip.getHostAddress()); 17 System.out.println("****************"); 1819 InetSocketAddress id=new InetSocketAddress("逐梦青空",8080); 2021 System.out.println(id.getAddress()); 22 System.out.println(id.getHostString()); 23 System.out.println(id.getHostName()); 24//以上三种方法均可以获得对应ip地址下的主机名25 System.out.println(id.getPort()); 26 } 27 }
效果截图:
2.InetSocketAddress
1 package com.etc; 2 3 import java.net.InetSocketAddress; 4 /* 5 * 套接字socket,包含端口并将其加以封装 6 * InetSocketAddress isa=new InetSocketAddress(String hostname,int port); 7 */ 8 public class InetSocketDemo { 9 public static void main(String[] args) { 10 // 不仅可以封装ip地址和DNS,还可以封装port即端口号 11 InetSocketAddress isa=new InetSocketAddress("逐梦青空",8080); 12 System.out.println("端口号:"+isa.getPort()+";地址: "+isa.getAddress()+";主机名:"+isa.getHostName()); 1314 } 15 }
效果截图:
3.URL
1 package com.etc; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStreamReader; 8 import java.io.OutputStreamWriter; 9 import java.net.URL; 10 11 public class URLDemo { 12 13 public static void main(String[] args) throws IOException { 1415 URL url=new URL("https://photo.fengniao.com/f_15.html"); 16 System.out.println("协议:"+url.getProtocol()); 17 System.out.println("存放资源的主机域名:"+url.getHost()); 18 System.out.println("端口号:"+url.getPort()); 19 System.out.println("资源文件名:"+url.getFile()); 20 System.out.println("参数:"+url.getQuery()); 21 System.out.println("锚点:"+url.getRef()); 2223//利用openStream()方法返回输入流资源24 BufferedReader bf=new BufferedReader(new InputStreamReader(url.openStream(),"utf-8")); 25//信息重组以文件形式返回26 BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("蜂鸟.html"),"utf-8")); 27//利用循环读取输入流信息28 String msg=null; 29while((msg=bf.readLine())!=null) { 30 bw.append(msg); 31 bw.newLine(); 3233 } 34//关闭流35 bf.close(); 36 bw.close(); 37 } 3839 }
效果截图:
4.UDP
(1)客户端
1 package com.test; 2 3 import java.io.IOException; 4 import java.net.DatagramPacket; 5 import java.net.DatagramSocket; 6 import java.net.InetSocketAddress; 7 import java.net.SocketException; 8 9 /* 10 * 1)创建客户端:DatagramSocket +指定端口 11 * 2)准备数据 : 字节数组 12 * 3)打包: DatagramPacket + 服务器地址+端口 13 * 4)发送: 14 * 5)释放资源: 15 */ 16 public class Myclient { 17 18 public static void main(String[] args) throws IOException { 19//创建客户端20 DatagramSocket client=new DatagramSocket(6666); 21//准备数据 : 字节数组22 String msg="我很喜欢敲代码!"; 23byte[] by=msg.getBytes(); 24//打包: DatagramPacket + 服务器地址+端口 25//DatagramPacket(byte buf[], int offset, int length, InetAddress address, int port)26 DatagramPacket packet=new DatagramPacket(by,by.length,new InetSocketAddress("逐梦青空",8888)); 27//发送:28 client.send(packet); 29//释放资源30 client.close(); 31 } 3233 }
(2)服务器端
1 package com.test; 2 3 import java.io.IOException; 4 import java.net.DatagramPacket; 5 import java.net.DatagramSocket; 6 import java.net.SocketException; 7 8 /* 9 * 1)创建服务端: DatagramSocket +指定端口 10 * 2)准备接收容器: 字节数组 封装 DatagramPacket 11 * 3)封装成包:-》接收数据 12 * 4)分析: 13 * 5)释放资源: 14 */ 15 public class Myserver { 16 17 public static void main(String[] args) throws IOException { 18//创建服务端19 DatagramSocket server=new DatagramSocket(8888); 20//准备接收容器 1M21byte[] by=newbyte[1024*1024]; 22//包23 DatagramPacket packet=new DatagramPacket(by,by.length); 24//接收数据25 server.receive(packet); 26//分析:27byte[] data=packet.getData(); 28int len=packet.getLength(); 29 System.out.println(new String(data,0,len)); 30//释放资源31 server.close(); 32 } 3334 }
效果截图:
ps:文章待完善,后续会加以修改。
原文:https://www.cnblogs.com/weekstart/p/10826900.html
内容总结
以上是互联网集市为您收集整理的java-网络编程入门全部内容,希望文章能够帮你解决java-网络编程入门所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。