Java网络编程知识

这篇具有很好参考价值的文章主要介绍了Java网络编程知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.网络编程概述

1.网络编程的目的

2.网络编程的三个问题

1.如何准确定位网络上的主机?

2.如何定位主机上的特定应用?

3.找到主机后如何可靠高效的进行数据传输?

2.通信要素一:IP和端口号

1.IP地址

2.端口号

3.套接字

3.通信要素二:网络协议

1.使用TCP协议通信

1.客户端

2.服务器端

4.URL编程:统一资源定位符


1.网络编程概述

1.网络编程的目的

        直接或间接的通过网络协议和其他计算机实现数据交换,进行通讯。

2.网络编程的三个问题

1.如何准确定位网络上的主机?

主机:IP地址来确定

2.如何定位主机上的特定应用?

应用:端口号来确定

3.找到主机后如何可靠高效的进行数据传输?

通过网络通信协议:TCP/IP协议

2.通信要素一:IP和端口号

1.IP地址

1.IP地址:inetAddress;唯一的表示Internet上的计算机;

2.IPV4:由4个字节组成,0-255;已经用尽

   IPV6:由16个字节组成,写成8个无符号整数;更适合如今使用

3.DNS:域名解析服务器

4.一般访问网络不会去记IP地址:192.168.1.1;而是通过域名:比如:www.mi.com等来访问,然后经过DNS解析域名在网络服务器上找到相应资源。

5.本地回路地址:127.0.0.1;对应:localhost

6.实例化方法:

        getByName(String host)

        getLocalHost():获取本地地址

        getHostName():获取主机域名

        getHostAddress:获取主机IP地址

 @Test
    public void test() throws UnknownHostException {

        InetAddress ia = InetAddress.getByName("127.0.0.1");
        InetAddress localHost = InetAddress.getLocalHost();
        System.out.println(ia.getHostAddress());
        System.out.println(ia.getHostName());
        System.out.println(localHost.getHostName());
        System.out.println(localHost.getHostAddress());

    }

2.端口号

1.端口号概述:规定为16位整数:0-65535

作用:唯一标识正在计算机上运行的进程

2.端口分类:

        公认端口:0-1023;被预先定义的服务通信占用。

        注册端口:1024-49151;分配给用户进程或应用程序

        动态/私有端口:49152-65535

3.套接字

        端口号和IP地址的组合得出一个网络套接字:Socket;因此可以直接使用Socket来通信,其中已经包含了IP地址和端口号。

3.通信要素二:网络协议

1.使用TCP协议通信

1.客户端

1.创建Socket对象,指明服务器端IP和端口号

2.获取一个输出流,用于输出数据

3.写出数据的操作

4.资源关闭

//客户端
@Test
public void test1() throws IOException {

    //1.造socket对象,指明IP地址和端口号
    Socket socket = new Socket("127.0.0.1", 8899);
    //2.获取输出流,输出数据
    OutputStream os = socket.getOutputStream();
    //3.写出数据
    FileInputStream fi = new FileInputStream("hello.txt");
    byte[] buffer = new byte[1024];
    int len;
    while((len = fi.read(buffer)) != -1){
        os.write(buffer,0,len);
    }
    //read()不会主动关闭数据输出,而是继续等待传输数据,因此主动关闭数据的输出
    socket.shutdownOutput();


    //接受来自服务器的数据
    InputStream is = socket.getInputStream();
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    byte[] buffer1 = new byte[1024];
    int len1;
    while((len1 = is.read(buffer1)) != -1){
        bos.write(buffer1,0,len1);
    }
    System.out.println(bos.toString());

    //4.关闭流
    fi.close();
    os.close();
    socket.close();


}

2.服务器端

1.创建服务器端ServerSocket,指明自己的端口号;IP地址默认为服务器地址

2.调用accept()方法接收来自于客户端的socket

3.获取输入流

4.读取输入流中的数据

5.关闭资源

 //服务器端
    @Test
    public void test2() throws IOException {

        //1.创建服务器端ServerSocket,指明自己的端口号;IP地址默认为服务器地址
        ServerSocket ss = new ServerSocket(8899);
        //2.调用accept()方法接收来自于客户端的socket
        Socket soc = ss.accept();
        //3.获取输入流
        InputStream is = soc.getInputStream();
        //4.读取输入流中的数据
        FileOutputStream fos = new FileOutputStream("hello2.txt");
        byte[] buffer = new byte[1024];
        int len;
        while((len = is.read(buffer)) != -1){
            fos.write(buffer,0,len);
        }

        //返回“发送成功”给客户端
        OutputStream os = soc.getOutputStream();
        os.write("已经收到文件了!".getBytes());

        //5.关闭资源
        fos.close();
        is.close();
        soc.close();
        ss.close();


    }

4.URL编程:统一资源定位符

1.标识Internet上某一资源的地址

2.URL包含五部分:

Java网络编程知识

3.URL方法和编程文章来源地址https://www.toymoban.com/news/detail-483081.html

public static void main(String[] args) throws MalformedURLException {
    URL url = new URL("http://localhost:8899/day36/hello.txt");
    System.out.println(url.getFile());
}

到了这里,关于Java网络编程知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 完全去中心化的编程模式,不需要服务器,也不需要ip,就像一张漫无目的的网络、四处延伸

    这是一篇畅想的文章,只说我的编程理念、实现原理。 现在信息传输架构,大部分都是c/s架构,客户端向服务器传递信息,服务器根据不同的逻辑,开始分发信息。这种架构,很容易就形成信息中心化、信息垄断现象。 那么与之对应的,就是许多反中心化的技术,区块链、

    2024年02月02日
    浏览(39)
  • 突破编程_C++_网络编程(TCPIP 四层模型(概述))

    TCP/IP 协议,全称为 Transmission Control Protocol/Internet Protocol,中文名为传输控制协议/因特网互联协议,又名网络通讯协议。这是 Internet 最基本的协议,也是 Internet 国际互联网络的基础。它主要由网络层的 IP 协议和传输层的 TCP 协议组成,定义了电子设备如何连入因特网,以及数

    2024年04月08日
    浏览(48)
  • Linux网络编程 网络基础知识

    目录 1.网络的历史和协议的分成 2.网络互联促成了TCP/IP协议的产生 3.网络的体系结构 4.TCP/IP协议族体系 5.网络各层的协议解释 6.网络的封包和拆包 7.网络预备知识      Internet-\\\"冷战\\\"的产物 1957年十月和十一月,前苏联先后欧两颗”Spuinik”卫星上天 1958年美国总统艾森豪威尔向

    2024年02月10日
    浏览(48)
  • 网络编程 tcp udp http编程流程 网络基础知识

    OSI分层:应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 tcp/ip: 应用层 传输层 网络层 数据链路 ip地址:唯一标识一台主机 ipv4 32位 ipv6 128位 寻址 可以反映物理上的一个变化 MAC地址:48 固化在计算机中 ip地址又两部分构成:网络号+主机号 端口号:标识一个应用程序

    2024年02月13日
    浏览(76)
  • 网络编程知识

    OSI模型: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-No810uUq-1690518028857)(C:Usersxie19PicturesCamera Roll屏幕截图 2023-07-13 121801.png)] 由上至下,对七个层的应用做简单的介绍: 常见的应用层协议: 协议 端口 说明 HTTP 80 超文本传输协议 HTTPS 443 HT

    2024年02月15日
    浏览(24)
  • 网络编程知识整理

    目录 1.1 引言 1.2 分层 1.3 TCP/IP的分层 1.4 互联网的地址 1.5 域名服务 1.6 封装 1.7 分用 1.8 端口号 1.1 引言         很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但 T C P / I P协议族允许它们互相进行通信。这一点很让人感到吃惊,因为它的作用已远

    2024年02月22日
    浏览(33)
  • 网络编程相关知识

    写一个应用程序,让这个程序可以使用网络通信,这里就需要调用传输层提供的api,传输层提供协议,主要是两个: UDP,TCP,它们分别提供了一套不同的api,socket api. UDP:无连接,不可靠传输,面向数据报,全双工 TCP:有连接,可靠传输,面向字节流,全双工 一个客户端可以连接多个服务器,一个

    2024年02月09日
    浏览(34)
  • 学习网络编程No.1【网络基础知识】

    北京时间:2023/8/4/22:40,天苍苍野茫茫,风吹造地见牛羊,此时心潮澎湃,非常开心,啊哈哈哈!因为就在刚刚我们终于把系统编程方面的知识给学完了,啊哈哈哈!真是功夫不负有心人呀!呜呜呜,仰天而泣,算了,不能发神经,哈哈!今天把最后一节有关多线程知识的课

    2024年02月14日
    浏览(57)
  • Linux网络编程(一-网络相关知识点)

    目录    一、网络相关知识简介 二、网络协议的分层模型 2.1 OSI七层模型 2.2 TCP/IP五层模型 2.3 协议层报文间的封装与拆封  三、IP协议 3.1 MAC地址  3.2 IP地址 3.3 MAC地址与IP地址区别 互联网通信的本质是数字通信,任何数字通信都离不开通信协议的制定,通信设备只有按照约定

    2024年01月24日
    浏览(37)
  • 网络编程套接字 | 预备知识

    在之后的文章中我们将来讲解网络编程中的相关知识点,再本文中我们首先来讲解一下网络编程中的预备知识: 在IP数据包中有两个IP地址分别是源IP地址和目的IP地址,此时这里就会出现一个问题就是:如果我们光有IP地址,是无法完成通信的。有了IP地址只能够将消息发送到

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包