网络程序设计是值编写与其他计算机进行通信的程序,Java已经将网络程序所需要的东西封装成不同的类。只要创建这些类的对象,使用相应的方法,即使设计人员不具备有关的网络知识,也可以编写出高质量的网络通信程序。

局域网与因特网

为了实现两台计算机的通信,必须要用一个网络线路连接两台计算机,

服务器是指提供信息的计算机或程序,客户机是指请求信息的计算机或程序,而网络用于连接服务器与客户机,实现两者互相通信,我们通常所说的局域网(Local Area Network,LAN),就是多个计算机相互连接组成的封闭式计算机组,可以由量太计算机组成,也可以由同一区域内的上千台计算机组成。由LAN延伸到更大的范围,这样的网络称为广域网(Wide Area Network,WAN),它主要将分布在不同地区的局域网或计算机系统互相连起来,达到资源共享的目的,我们熟悉的因特网(Internet),就是世界范围内最广大的局域网。

网络协议

网络协议规定了计算机之间连接的物理,机械(网线与网卡的连接规定),电器(有效的电平范围)等特征以及计算机之间的相互寻址规则,数据发送冲突的解决,长的数据如何分段传送与接收等。就像不同国家有不同的法律一样,目前网络协议也有很多种,下面简单的介绍几个常用的网络协议。

1,IP协议

IP是Internet Protocol的简称,它是一种网络协议。Internet网络采用的协议是TCP/IP协议,其全称是Transmission Control Protocol/Internet Protocol。Internet依靠TCP/IP协议,在全球范围内实现不同硬件结构,不同操作系统,不同网络系统的互联。在Internet网络上存在数以亿计的主机,每一台主机在网络上用为其分配的Internet地址代表自己,这个地址就是IP地址。到目前为止IP地址用4个字节,也就是32位的二进制数来表示,称为IPv4。为了便于使用,通常取用没个字节的十进制数,并且没个字节之间用圆点隔开来表示IP地址,如192.168.1.1。现在人们正在试验使用16个字节来表示IP地址,这就是IPv6,但IPv6还没有投入使用。
TCP/IP模式是一种层次结构,共分为4层,分别为应用层,传输层,网络互连层,和主机到网络层。各层实现特定的功能,提供特定的服务和访问接口,并具有相对的独立性。

2,TCP与UDP协议

在TCP/IP协议栈中,有两个高级协议是网络应用程序编写者应该了解的,即TCP(Transmission Contorl Protocol,传输控制协议)与UDP(User Datagram Protocol,用户数据报协议)。
TCP协议是一种以固连接线为基础的协议,它提供两台计算机间可靠的数据传送。TCP可以保证从一端数据送至连接的另一端时,,数据能够确实送达,而且抵达的数据的排列顺序和送出时的顺序相同,因此,TCP协议适合可靠性要求比较高的场合。就像拨打电话,必须先拨号给对方,等两段确定连接后,相互才能听到对方说话,也知道对方回应的是什么。
HTTP,FTP和Telnet等都需要使用可靠的通信频道,例如,HTTP从某个URL读取数据时,如果收到的数据顺序与发送时不同,就可能会出现一个混乱的HTML文件或是一些无效的信息。
UDP是无连接通信协议,不保证可靠数据的传输,但能够向若干个目标发送数据,接收发自若干个源的数据,UDP是以独立发送数据报的方式进行。这种方式就像邮递员送信给收件人,可以寄出很多信给同一个人,而每一封信都是相对独立的,各封信送达的顺序并不重要,收信人接受信件的顺序也不能保证与寄出信件的顺序相同。
UDP协议适用于一些对数据准确性要求不高的场合,如网络聊天室,在线影片等。这是由于TCP协议在认证上存在额外耗费,可能使传输速度减慢,而UDP协议可能会更适合这些对传输速度和时效要求非常高的网站,即使有一小部分数据包遗失或传送顺序有所不同,这不会严重危害该项通信。
一些防火墙和路由器会设置成不允许UDP数据包传输,因此,若遇到UDP连接方面的问题,应先确定所在网络是否允许UDP协议。

端口和嵌套字

“端口”是英文port的意译,可以认为是设备与外界通信交流的出口,所有的数据都通过该出口与其他计算机或者设备相连,网络程序设计中的端口并非真实的物理存在,而是一个假象的连接装置。端口被指定为一个在0~65535之间的整数。HTTP服务一般使用80端口,FTP服务使用21端口,加入一台计算机提供了HTTP,FTP等多种服务,那么客户机会通过不同的端口来确定连接到服务器的哪项服务上。
通常,0~1023之间的端口数用于一些知名的网络服务和应用,用户的普遍网络应用程序应该使用1024以上的端口数,以避免端口号与另一个应用或系统服务所用端口冲突。
网络程序中的套接字(Socket)用于将应用程序与端口连接起来。套接字是一个假象的连接装置,就像插插头的设备“插座”用于连接电器与电线一样。Java将套接字抽象化为类,程序设计者只需创建Socket类对象,即可使用套接字。

JAVA自学笔记,网络程序设计基础相关推荐

  1. JAVA自学笔记22

    JAVA自学笔记22 1.操作基本数据类型的流 DataInputStream DataOutputStream 数据输出流允许应用程序以适当方式将基本的Java数据类型写入输出流中.然后,应用程序可 ...

  2. JAVA自学笔记24

    JAVA自学笔记24 1.能使用同步代码块就使用同步代码块,除非锁对象是this,就可以考虑使用同步方法.静态方法的锁是类的字节码对象. 2.JDK5新特性 1)接口Lock void Lock()/ ...

  3. JAVA自学笔记08

    JAVA自学笔记08 1.构造方法私有,外界就不能再创建对象 2.说明书的制作过程 1)写一个工具类,在同一文件夹下,测试类需要用到工具类,系统将自动编译工具类:工具类的成员方法一般是静态的,因此在测 ...

  4. JAVA自学笔记23

    JAVA自学笔记23 1.多线程 1)引入: 2)进程 是正在运行的程序.是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和系统资源. 多进程: 单进程的计算机只能做一件事情,而现在 ...

  5. 廖雪峰Java自学笔记------Java简洁

    廖雪峰Java自学笔记------Java简洁 这是专门针对小白的零基础Java教程. 为什么要学Java? 因为Java是全球排名第一的编程语言,Java工程师也是市场需求最大的软件工程师,选择Ja ...

  6. Java自学笔记总结04

    Java自学笔记04 一.Lambda表达式 1.1 函数式编程思想概述 1.2 体验Lambda表达式 1.3 Lambda表达式的标准格式 1.4 Lambda表达式的使用 1.5 Lambda表 ...

  7. JAVA自学笔记07

    JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...

  8. JAVA自学笔记21

    JAVA自学笔记21 1.转换流 由于字节流操作中文不是非常方便,因此java提供了转换流 字符流=字节流+编码表 1)编码表 由字符及其对应的数值组成的一张表 图解: 2)String类的编码和解码 ...

  9. JAVA自学笔记25

    JAVA自学笔记25 1.GUI 1)图形用户接口,以图形的方式,来显示计算机操作的界面,更方便更直观 2)CLI 命令行用户接口,就是常见的Dos,操作不直观 3) 类Dimension 类内封装单 ...

最新文章

  1. python一个字母红了_Python练习:最后一个字母/第一个字母
  2. 直播技术(从服务端到客户端)二
  3. python-mysql
  4. JavaScript数据迭代方法差别
  5. SSRF(服务端请求伪造)
  6. 人才空缺4600万!大厂优先录用,这个职业今年火遍全网
  7. cuSPARSE库:(四)不同矩阵格式在内存中的存储方式
  8. javaSE----学习路线
  9. 计算机二级是报office还是vb,请问一下计算机二级中,高阶office好考,还是VB好考?...
  10. 工厂模式和策略模式区别
  11. 配置多个ssh-key
  12. 电脑测试软件_一种笔记本电脑转轴扭力测试仪
  13. sed学习笔记(1) - 入门知识
  14. SQL2005企业版详细部署(一)
  15. C语言知识点——函数参数
  16. App自动绑定的五大应用场景
  17. vue路由守卫,路由拦截,导航守卫
  18. Ubuntu系统下python编程入门
  19. 微服务架构 VS 单体架构
  20. Unity:碰撞检测方法

热门文章

  1. 天虹 项目支付宝开发
  2. OPPOR9SK_官方线刷包_救砖包_解账户锁
  3. NN:神经网络学习,常见激活和损失函数的Python实现
  4. kgl simulator,共享池simulator以及缓冲simulator相关解释
  5. ELK搭建开源日志系统(window版本)—图文详细
  6. iphone 屏幕使用时间 密码忘记
  7. 宏碁笔记本重装系统,识别不到硬盘
  8. python画素描画_python如何将图片转换素描画
  9. python easygui模块_Python 模块EasyGui
  10. C# Html解析之AngleSharp_C#Dom解析(强烈推荐)