Java网络编程/TCP编程

29 篇文章 0 订阅
计算机网络是通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来的,实现资源共享和数据传输的系统。网络编程就是编写程序使互联网的两个或多个设备(如计算机)之间进行数据传输。Java 语言对网络编程提供了良好的支持。通过其提供的接口我们可以很方便地进行网络编程。

IP地址相关操作

InetAddress Java IP 地址的封装。其下有两个子类 Inet4Address Inet6Address 。这个类的实例经常和UDP DatagramSockets Socket ServerSocket类一起使用InetAddress 没有公开的构造方法,因此你必须通过一系列静态方法中的某一个来获取它的实例。
//www.baidu.com 实际上是主机名称
//IPv4 采用的是点分十进制的记法,所以难以记忆,
// 引入 DNS 可以将一个有含义的字符串和一个 IP 地址建立对应关系,当使用有含义的字符串时可以通过 DNS
换为 IP 地址
//InetAddress 对象中可以封装一个 IP 地址和一个主机名
InetAddress ia = InetAddress . getByName ( "www.baidu.com" ); // 获取对应主机名称的 IP
址,会自动调用 DNS 服务
System . out . println ( ia );
System . out . println ();
InetAddress [] arr = InetAddress . getAllByName ( "www.baidu.com" ); // 获取对应主机
名称的所有注册 IP 地址
for ( InetAddress tmp : arr )
System . out . println ( tmp );
System . out . println ();
// new InetAddress() 没有提供可以直接使用的构造器,所以不能直接 new 创建对象
ia = InetAddress . getLocalHost (); // 获取本地机的 IP 地址
System . out . println ( ia ); //lover/172.30.1.101
ia = InetAddress . getLoopbackAddress (); // 获取回绕地址
System . out . println ( ia ); //localhost/127.0.0.1
System . out . println ( ia . getClass ()); //class java.net.Inet4Address
System . out . println ();
// 通过 IP 地址查询对应信息
InetAddress ia1 = InetAddress . getByName ( "14.215.177.39" );
System . out . println ( ia1 );
// 用于判断是否可以连接 ia 对象对应的主机,可以理解为尝试是否能够 ping
System . out . println ( ia1 . isReachable ( 2000 ));

 URL访问网上资源

URL 对象代表统一资源定位器,是指向互联网资源的指针,资源可以是简单的文件或目录,也可以是对复杂对象的引用,例如对数据库或搜索引擎的查询。用协议名、主机、端口和资源组成,即满足格式
http 协议的标准端口为 80 https=http+SSL 加密数据传输的 http ,标准端口为 443
URL 统一资源指针,可以指定一个具体的资源,例如一个 html 网页
URI 统一资源标识符,可以认为为了方便记忆,给 URL 起的别名

 构建URL对象

创建一个 URL 对象,用于指代网络中的一个资源,如果网址不合法,
则抛出 MalformedURLException
最重要的方法:
  • url.openConnection()URLConnection 可以获取输入、输出流
  • url.openStream()InputStream 直接获取输入流
不重要的方法:
通过 URL 对象的一些方法可以访问该 URL 对应的资源:
  • String getFile():获取该URL的资源名
  • String getHost():获取主机名
  • String getPath():获取路径部分
  • int getPort():获取端口号

URLURLConnection比较

URL URLConnection 的区别在于前者代表一个资源的位置 , 后者代表一种连接
Java 语言提供了两种方法读取数据,一种是通过 URL 对象直接得到相关的网络信息 InputStream is =url.openStream(); ,另一种是先得到一个 URLConnection 实例,再得到 InputStream InputStream 对象,然后读取数据
URLConnection conn = url.openConnection(); 
InputStream is1 = conn.getInputStream(); 
OutputStream os1 = conn.getOutputStream();
前者是一种简单、直接的方法,但缺乏灵活性,并且只能读取只读信息,后者提供了更加灵活有效的方法来读取网络资源

TCP编程

在实际应用中 TCP 网络程序提供可靠的数据通信,而 UDP 网络程序则不保证数据的可靠性,但是协议简单、传输速度快(比如用在音视频数据传输,它们不需要很高的可靠性,偶尔丢帧是可以忍受的)
  • TCPTranfer Control Protocol的 简称,是一种面向连接的端对端的保证可靠传输的协议。
  • 通过TCP协议传输,得到的是一个顺序的无差错的数据流。
发送方和接收方的成对的两个 socket 之间必须建立连接,以便在 TCP 协议的基础上进行通信,当一个socket(通常都是 server socket )等待建立连接时,另一个 socket 可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送 或接收操作。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值