Java网络编程

 

                                  Java网络编程

一.网络基础知识

(1)网络基本概念:计算机网络,就是把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。

(2)计算机网络是现代通信技术与计算机技术相结合的产物,提供了资源共享,信息传输与集中处理、均衡负荷与分布处理以及综合信息服务等丰富的功能。

(3)计算机网络按规模大小和延伸范围可分为:局域网(LAN)、城域网(MAN)、广域网(WAN)

(4)按照网络拓朴结构可分为:环型网、星型网、总线网、网状型、树型

(5)按照通信传输介质可划分为:双绞线网、同轴电缆网、光纤网、卫星网

(6)计算机网络中实现通信的约定称为通信协议

(7)网络协议通常由三部分组成:语法、语义、变换规则

(8)网络体系结构:国际标准化组织ISO于l978年提出“开放系统互连参考模型”,即著名的OSI(Open System Interconnection)模型

(9)OSI模型把计算机网络分成:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

(10) TCP协议:提供可靠的数据传输服务的规则。

注:提供了可靠的数据传输的基本单元和格式

IP协议进行IP数据包的分割和组装。

注:规定了Internet数据传输的基本单元和格式

(11)协议还有:HTTP(超文本传输协议),FTP(文件传输协议),SMTP(简单邮件传输协议),POP3(邮局协议版本3)

(12)端口:一个16位的整数,用于表示数据交给哪个通信程序处理。因此,端口就是应用程序与外界交流的出入口,它是一种抽象的软件结构,包括一些数据结构和I/O(基本输入/输出)缓冲区

二.Java的基本网络应用

注:JDK中为开发网络应用程序提供了java.net包,该包下的类和接口几乎都是为网络编程服务的。

1.InetAddress:用于描述IP地址的对象

(1)InetAddress类没有提供构造方法,而是提供了两个静态方法来获取InetAddress实例
(2)getByName(String host):根据主机获取对应的InetAddress对象。

(3)getByAddress(byte[] addr):根据原始IP地址来获取对应的InetAddress对象。

2.URL类的使用

(1)构造方法

Public URL(String str)

Public URL(URL context,String str)

(2)访问URL的对应资源

String getFile() 获取此URL的资源名

String getHost() 获取此URL的主机名

String getPath() 获取此URL的路径部分

Int getPort() 获取此URL的端口号

String getProtocol() 获取此URL的协议名称

String getQuery()获取此URL的查询字符串部分

URLConnection openConnection() 返回一个URLConnection对象,它表示到URL所引用的远程对象的连接

InputStream openStream() 打开与此URL的连接,并返回一个用于读取该URL资源的InputStream

package example;

 

import java.net.InetAddress;

 

public class TestNet1 {

 

    /**

     * @param args

     */

    public static void main(String[] args) throws Exception{

       // TODO Auto-generated method stub

       //根据主机名来获取对应的InetAddress实例

       InetAddress ip=InetAddress.getByName("www.oneedu.cn");

       //判断是否可达

       System.out.println("oneedu是否可达: "+ip.isReachable(2000));

       //获取该InetAddress实例的ip地址

       System.out.println(ip.getHostAddress());

       //根据原始ip的地址来获取对应的InetAddress实例

       InetAddress local=InetAddress.getByAddress(new byte[]{127,0,0,1});

       System.out.println("本机是否可达: "+local.isReachable(5000));

       //获取该InetAddress实例对应的完全限定域名

       System.out.println(local.getCanonicalHostName());

    }

 

}

 

 

package example;

 

import java.io.*;

import java.net.*;

 

public class TestNet2 {

    public static void main(String[] args) throws Exception{

       URL aURL=new URL("http://java.sun.com:80/docs/books/tutorial"+"/index.html?name=networking#DOWNLOADING");

       System.out.print("protocol="+aURL.getProtocol());

       System.out.print("authority="+aURL.getAuthority());

       System.out.print("host="+aURL.getHost());

       System.out.print("port="+aURL.getPort());

       System.out.print("path="+aURL.getPath());

       System.out.print("query="+aURL.getQuery());

       System.out.print("filename="+aURL.getFile());

       System.out.print("ref="+aURL.getRef());

      

    }

}

package example;

 

import java.net.*;

import java.io.*;

 

public class TestNet3 {

 

    /**

     * @param args

     * @throws IOException

     */

    public static void main(String[] args) throws IOException {

       URL url=new URL("http://www.sina.com/");

       InputStreamReader isr=new InputStreamReader(url.openStream());

       BufferedReader in=new BufferedReader(isr);

       String InputLine;

       FileOutputStream fos=new FileOutputStream("d:\\mydownloadhtml.html");

       while((InputLine=in.readLine())!=null){

           fos.write(InputLine.getBytes());//写入文件

            System.out.println(InputLine);//显示到控制台

       }

       in.close();

       // TODO Auto-generated method stub

 

    }

 

}

Package example;

 

import java.io.UnsupportedEncodingException;

import java.net.URLDecoder;

import java.net.URLEncoder;

 

public class TestNet4 {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       //将application/x-www-form-urlencoded字符串解码

       try {

           String str1=URLDecoder.decode("Java%E5%BC%80%E5%8F%91","UTF-8");

           System.out.println(str1);

           //将普通字符串转换成application/x-www-form-urlencoded字符串

           String str2=URLEncoder.encode("Java 程序开发","UTF-8");

           System.out.println(str2);

       } catch (UnsupportedEncodingException e) {

           // TODO Auto-generated catch block

           System.out.println(e.getMessage());

       }

    }

 

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java网络编程是一种通过使用Java编程语言,在计算机网络上实现通信的技术。它涉及到协议、IP地址和端口号等三个重要要素。Java编写的应用程序可以在单个计算机上运行,也可以在网络的服务器端和客户端上分布运行。此外,Java还可以用于编写小型应用程序模块或applet,作为网页的一部分使用。applet可以嵌入网页中,并在浏览器中运行。在Java中,使用URI可以代表绝对的或相对的资源,而URL则包含了定位资源的信息,并且不能是相对的。Java提供了一系列的类和接口,例如InetAddress、Socket、ServerSocket、URLURLConnection等,用于实现各种网络应用。通过使用这些类和接口,可以创建连接客户端和服务器之间的套接字,并实现面向连接的通信,保证数据的可靠传输。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Java网络编程](https://blog.csdn.net/weixin_42784609/article/details/130388655)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [超详细入门到精通自学视频课程(阶段01:JavaSE基础02 编程思维编程思维和编程能力、综合应用专题-04、案例...](https://download.csdn.net/download/weixin_54787054/88224199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [网络编程](https://blog.csdn.net/zhixingwu/article/details/103226003)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值