网络的七层结构:

第一层:物理层,网线。

第二层: 数据链路层,交换机。交换机有IP地址。这一层的数据叫做帧

第三层:网络层,数据包方向的定义,路由器。现在也有具有路由功能的交换机。主要将从下层接收到的数据进行IP地址的封装与解封装。

第四层:传输层,定义了一些传输数据的协议和端口号。TCP,UDP。

第五层:会话层,

第六层:表示层。主要就是进行对接收的数据惊醒解释,加密与解密。压缩与解压缩。

第七层:应用层。主要是一些终端的应用,比如FTP,各种文件的下载。WEB 浏览器等。

传输层和网际层还是比较独立的。java网络编程中的主要就是传输层和网际层。

javaWeb主要是应用层。平常电脑使用使用的主要是主机至网络层。

访问本机用。 本地回环地址:127.0.0.1 主机名:localhost

物理端口,逻辑端口。用于标识进程的逻辑地址。不同进程的标识。有效端口:0~65535,其中0~1024系统使用或保留端口。

在防火墙中可以设置某个端口的程序,则这个程序无法上网。

传输协议:通讯的规则。常见协议:TCP,UDP。

UDP:

将数据以及源和目的封装成数据包中,不需要建立连接。

每个数据包的大小在限制在64K内。

因无连接,是不可靠协议。

不需要建立连接,速度快。

QQ和飞秋,视频通话都是UDP。

TCP

建立连接,形成传输数据的通道。

在连接中进行打数据量传输。

通过三次握手完成连接,是可靠协议。

必须建立连接,效率会稍低。

打电话是TCP。下载数据就是。只要一掉线就无法下载。

类 InetAddress

此类表示互联网协议 (IP) 地址。

IP 地址是 IP 使用的 32 位或 128 位无符号数字,它是一种低级协议,UDP 和 TCP 协议都是在它的基础上构建的。

该类没有构造函数。

这就说明不能直接new。

但是还有非静态的一般方法,

且返回其对象并且是静态方法。

获取新浪,网易这些网站的IP地址不唯一,因为他们会用到服务器集群的这种情况。

百度是可以用一个固定的IP地址进行解析的。

C:\Windows\System32\drivers\etc\hosts

这个hosts文件是本地DNS列表。

hosts文件中就有 127.0.0.1  对应着是localhost

首先进行本地的DNS列表的访问,再访问外部DNS服务器进行解析。

如果经常遇到有弹窗的游戏广告的网站的时候,把该网站的网址写在本地DNS解析列表文件中。这样遇到该网站的时候首先进行本地DNS解析列表的检查,在本地注册了就不会走外部的DNS服务器。

Socket 就是为网络服务提供的一种机制。

通信的两端都有Socket。

网络通信其实就是Socket间的通信。

数据在两个Socket间通过IO传输。

所以网络编程又叫做Socket编程。

类 DatagramSocket

此类表示用来发送和接收数据报包的套接字。

类 DatagramPacket

此类表示数据报包。

数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。

IPDemo .java

 import java.net.InetAddress;
 import java.net.UnknownHostException;

 public class IPDemo {
     public static void main(String[] args) throws UnknownHostException {
         //获取本地主机ip地址对象。
         InetAddress ip = InetAddress.getLocalHost();

         //获取其他主机的ip地址对象。
         ip = InetAddress.getByName("192.168.1.110");
         //InetAddress.getByName("kongxiaohan-PC");

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

UDPSendDemo .java

 public class UDPSendDemo {
     public static void main(String[] args) throws IOException {
         System.out.println("发送端启动......");
         /*
          * 创建UDP传输的发送端。
          * 思路:
          * 1,建立udp的socket服务。
          * 2,将要发送的数据封装到数据包中。
          * 3,通过udp的socket服务将数据包发送出去。
          * 4,关闭socket服务。
          */
         //1,udpsocket服务。使用DatagramSocket对象。
         DatagramSocket ds = new DatagramSocket(8888);
         //2,将要发送的数据封装到数据包中。
         String str = "udp传输演示:哥们来了!";
             //使用DatagramPacket将数据封装到的该对象包中。
         byte[] buf = str.getBytes();

 DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("1.1.1.1"),10000);
         //3,通过udp的socket服务将数据包发送出去。使用send方法。
         ds.send(dp);
         //4,关闭资源。
         ds.close();
     }
 }

DatagramPacket(byte[] buf, int length, InetAddress address, int port)
构造数据报包,用来将长度为
length 的包发送到指定主机上的指定端口号。

构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。length 参数必须小于等于 buf.length。

参数:

buf - 包数据。

length - 包长度。

address - 目的地址。

port - 目的端口号。

[未完成]关于Java网络编程总结的更多相关文章

  1. 20145205 《Java程序设计》实验报告五:Java网络编程及安全

    20145205 <Java程序设计>实验报告五:Java网络编程及安全 实验要求 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.客户端中输入明文,利用DES算法加密,D ...

  2. Java 网络编程学习总结

    新手一枚,Java学习中,把自己学习网络编程的知识总结一下,梳理下知识,方便日后查阅,高手莫进. 本文的主要内容: [1]    网络编程认识                [2]  TCP/IP编程 ...

  3. 20145212 实验五《Java网络编程》

    20145212 实验五<Java网络编程> 一.实验内容 1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成 ...

  4. 20145213《Java程序设计》实验五Java网络编程及安全

    20145213<Java程序设计>实验五Java网络编程及安全 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传输系统. 实验预期 1.客户端与服务器 ...

  5. 20145206《Java程序设计》实验五Java网络编程及安全

    20145206<Java程序设计>实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我和201451 ...

  6. 20145337实验五Java网络编程及安全

    20145337实验五Java网络编程及安全 实验内容 掌握Socket程序的编写 掌握密码技术的使用 设计安全传输系统 实验步骤 基于Java Socket实现安全传输 基于TCP实现客户端和服务器 ...

  7. java 网络编程复习(转)

    好久没有看过Java网络编程了,现在刚好公司有机会接触,顺便的拾起以前的东西 参照原博客:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942 ...

  8. JAVA课程实验报告 实验五 Java网络编程及安全

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  9. 20145225《Java程序设计》 实验五 Java网络编程及安全

    20145225<Java程序设计> 实验五 Java网络编程及安全 实验报告 一.实验内容 基于Java Socket实现安全传输. 基于TCP实现客户端和服务器,结对编程一人负责客户端 ...

随机推荐

  1. ColorNote[动态][log]

    Windows 应用商店上传日志 [ColorNote In Windows APP Store Log]: ColorNote v1.0 2012/12/2 ColorNote v1.1 2012/ ...

  2. 四轴飞行diy全套入门教程(从最基础的开始)

    转载:http://www.cnmox.com/thread-12460-1-1.html首先声明本人也是菜鸟,此教程就是从一个菜鸟的角度来讲解,现在论坛上的帖子都突然冒很多名词出来,又不成体系,我自 ...

  3. [iOS基础控件 - 6.11.1] - 控制器 & 控制器view

    A.控制器的创建 控制器常见的创建方式有以下几种通过storyboard创建 直接创建 ViewController *vc = [[ViewController alloc] init];      ...

  4. CentOS 下安装操作Memcached

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...

  5. 创建类模式(二):抽象工厂(Abstract Factory)

    定义 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类. 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态.抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式. ...

  6. [EntLib]微软企业库5.0 学习之路——第一步、基本入门

    话说在大学的时候帮老师做项目的时候就已经接触过企业库了但是当初一直没明白为什么要用这个,只觉得好麻烦啊,竟然有那么多的乱七八糟的配置(原来我不知道有配置工具可以进行配置,请原谅我的小白). 直到去年在 ...

  7. 【HTML】心愿墙 Demo展示

    这是跟着一个大神做的心愿墙,当时觉得有趣,现在清理磁盘中,所以就放到博客园中进行保存. 效果如下: 下载地址:点击下载

  8. Oracle 生成随机密码

    需求:需要定期更改密码.要求是1.密码位数11位.2.必须包含大小写字母.数字.特殊字符.3.排除一些特殊字符如().@.& oracle数据库中有可已生成随机密码包dbms_random,但 ...

  9. Delphi 7 升级到 Delphi 2010 总结

    1 字符串 >>string =unicodeString 字母的处理要定义AnsiString了 >>PChar =PWidechar >>str='普通汉字' ...

  10. iOS6 / iOS7 状态栏高度适配

    问题原因:iOS7的状态栏(status bar)不再占用单独的20px,所以假设你在iOS6上的界面布局是正常的,那么到了iOS7上就会变成以下这个样子:             左边是iOS6界面 ...