`
hao861002
  • 浏览: 86488 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java复习第十六天

阅读更多

网络基础知识

网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。
计算机网络形式多样,内容繁杂。网络上的计算机要互相通信,必须遵循一定的协议。目前使用最广泛的网络协议是Internet上所使用的TCP/IP协议。
IP地址:计算机在网络中唯一标识,相对于internet,IP为逻辑地址。

IP地址分类:
A类地址
A类地址第1字节为网络地址,其它3个字节为主机地址。另外第1个字节的最高位固定为0。
A类地址范围:1.0.0.1到126.155.255.254。
A类地址中的私有地址和保留地址:
10.0.0.0到10.255.255.255是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。
127.0.0.0到127.255.255.255是保留地址,用做循环测试用的。

B类地址

B类地址第1字节和第2字节为网络地址,其它2个字节为主机地址。另外第1个字节的前两位固定为10。
B类地址范围:128.0.0.1到191.255.255.254。
B类地址的私有地址和保留地址
172.16.0.0到172.31.255.255是私有地址
169.254.0.0到169.254.255.255是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从169.254.0.0到169.254.255.255中临得获得一个IP地址。

C类地址
C类地址第1字节、第2字节和第3个字节为网络地址,第4个个字节为主机地址。另外第1个字节的前三位固定为110。
C类地址范围:192.0.0.1到223.255.255.254。
C类地址中的私有地址:
192.168.0.0到192.168.255.255是私有地址。

D类地址
D类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1110。
D类地址范围:224.0.0.1到239.255.255.254

Mac地址:每个网卡专用地址,也是唯一的。
端口(port):应用程序(进程)的标识(网络通信程序)OS中可以有65536(2^16)个端口,进程通过端口交换数据。连线的时候需要输入IP也需要输入端口信息。
计算机通信实际上的主机之间的进程通信,进程的通信就需要在端口进行联系。
192.168.0.23:21
协议:为了进行网络中的数据交换(通信)而建立的规则、标准或约定,协议是为了保证通信的安全。
不同层的协议是完全不同的。


OSI网络参考模型(理论性较强的模型)                     
   七层,应用层、表示层、会话层、传输层、网络层、数据链路层、物理层:

网络层:寻址、路由(指如何到达地址的过程)
传输层:端口连接
TCP模型:应用层/传输层/网络层/网络接口
层与层之间是单向依赖关系,上层依赖于下层,下层不依赖于上层,层与层之间的连接是虚连接。对等层之间建立协议。
端口是一种抽象的软件结构,与协议相关:TCP23端口和UDT23端口为两个不同的概念。
端口应该用1024以上的端口,以下的端口都已经设定功能。

TCP/IP模型

Application
(FTP,HTTP,TELNET,POP3,SMPT)
Transport
(TCP,UDP)
Network
(IP,ICMP,ARP,RARP)
Link
(Device driver,….)

注:
IP:寻址和路由
ARP(Address Resolution Protocol)地址解析协议:将IP地址转换成Mac地址
RARP(Reflect Address Resolution Protocol)反相地址解析协议:与上相反
ICMP(Internet Control Message Protocol)检测链路连接状况。利用此协议的工具:ping , traceroute

TCP Socket

TCP是Tranfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。
   1) 服务器分配一个端口号,服务器使用accept()方法等待客户端的信号,信号一到打开socket连接,从socket中取得OutputStream和InputStream。
   2) 客户端提供主机地址和端口号使用socket端口建立连接,得到OutputStream和InputStream。
TCP/IP的传输层协议

      

建立TCP服务器端

一般,我们把服务器端写成是分发Socket的,也就是总是在运行,
创建一个TCP服务器端程序的步骤:
   
    1). 创建一个ServerSocket
    2). 从ServerSocket接受客户连接请求
    3). 创建一个服务线程处理新的连接
    4). 在服务线程中,从socket中获得I/O流
    5). 对I/O流进行读写操作,完成与客户的交互
    6). 关闭I/O流
    7). 关闭Socket
ServerSocket server = new ServerSocket(post)
Socket connection = server.accept();
ObjectInputStream put=new ObjectInputStream(connection.getInputStream());
ObjectOutputStreamo put=newObjectOutputStream(connection.getOutputStream());  
处理输入和输出流;
关闭流和socket。
典型的服务器端。
public class Server1 {
public static void main(String[] args) throws Exception {
ServerSocket ss=new ServerSocket(9000);
while(true){
Socket s=ss.accept();//获得一个Socket对象。
Thread t=new Thread1(s);//分发Socket。
t.start();
}
}
}
class Thread1 extends Thread{
Socket s;
public Thread1(Socket s){
this.s=s;
}
public void run(){
try {
OutputStream o=s.getOutputStream();
PrintWriter out=new PrintWriter(o);
out.println("Hello Client");
out.flush();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
建立TCP客户端

创建一个TCP客户端程序的步骤:

    1).创建Socket
    2). 获得I/O流
    3). 对I/O流进行读写操作
    4). 关闭I/O流
    5). 关闭Socket
Socket connection = new Socket(127.0.0.1, 7777);
ObjectInputStream input=new ObjectInputStream(connection.getInputStream());
ObjectOutputStream utput=new ObjectOutputStream(connection.getOutputStream());
处理输入和输出流;
关闭流和socket。


练习:
实现一个网络应用,客户端会给服务器发送一个字符串,服务器会把这个字符串转换成大写形式发回给客户端
并有客户端显示,同时,服务器会告知客户端,他是第几个客户端


UDP socket
这种信息传输方式相当于传真,信息打包,在接受端准备纸。
先由客户端给服务器发消息。以告诉服务器客户端的地址。
特点:
1) 基于UDP无连接协议
2) 不保证消息的可靠传输
3) 它们由Java技术中的DatagramSocket和DatagramPacket类支持
DatagramSocket(邮递员):对应数据报的Socket概念,不需要创建两个socket,不可使用输入输出流。
DatagramPacket(信件):数据包,是UDP下进行传输数据的单位,数据存放在字节数组中,其中包括了目标地址和端口以及传送的信息(所以不用建立点对点的连接)。
DatagramPacket的分类:
用于接收:DatagramPacket(byte[] buf,int length)
   DatagramPacket(byte[] buf,int offset,int length)
用于发送:DatagramPacket(byte[] buf,int length, InetAddress address,int port )
   DatagramPacket(byte[] buf,int offset,int length,InetAddress address,int port)
注:InetAddress类网址用于封装IP地址
没有构造方法,通过
InetAddress.getByAddress(byte[] addr):InetAddress
InetAddress.getByName(String host):InetAddress
等。

建立UDP 发送端

创建一个UDP的客户端的程序的步骤:

    1). 创建一个DatagramPacket,其中包含发送的数据和接收方的IP地址和端口
号。
    2). 创建一个DatagramSocket,其中包含了发送方的IP地址和端口号。
    3). 发送数据
    4). 关闭DatagramSocket
byte[] buf = new byte[1024];
DatagramSocket datagramSocket = new DatagramSocket(13);// set port
DatagramPackage intputPackage = new DatagramPackage(buf,buf.length);
datagramSocket.receive(inputPackage);
DatagramPackage outputPackage = new DatagramPackage(buf,0,buf.length,inetAddress,port);
datagramSocket.send(outputPackage); //客户端向服务器发信的过程
没建立流所以不用断开。

建立UDP 接受端

创建一个UDP的服务器端的程序的步骤:

    1). 创建一个DatagramPacket,用于存储发送方发送的数据及发送方的IP地址和端口号。
    2). 创建一个DatagramSocket,其中指定了接收方的IP地址和端口号。
    3). 接收数据
    4). 关闭DatagramSocket
byte[] buf = new byte[1024];
DatagramSocket datagramSocket = new DatagramSocket();//不用设端口,因为发送的包中端口
DatagramPackage outputPackage=new DatagramPackage(Buf,buf.length,serverAddress,serverPort);
DatagramPackage inputPackage=new DatagramPackage(buf,0,buf.length);  //收信之前要准备一封空信
datagramSocket.receive(inputPackage);

UDP处理多客户端,不必多线程,回信可以一封一封的回
在收发信设置为死循环

java.net.URL  统一资源定位器
定位在internet上的某一资源
更高层的网络传输
常用格式 
协议名://主机名:端口号/定位寻找主机内部的某一资源
http://www.tarena.com.cn:80/bin/index.html


作用:
1、必须完成
  网络聊天室,以广播的形式传输数据
2、QQ聊天室
  实现点对点的数据传输
3、统计一个目录下的所有“.java”文件及子目录下的".java"文件总共多少行
分享到:
评论

相关推荐

    JAVA书本复习题答案整合

    "JAVA书本复习题答案整合"是一个精心整理的资源包,它集合了多套Java书本复习题目及其对应的答案,旨在帮助学习者高效地备考期末考核。 1. **Java基础知识**:复习题可能涵盖了Java的基础语法,如变量、数据类型、...

    java 考试复习指南

    【Java 考试复习指南】 1. Java 编译过程:Java 源程序文件(扩展名为 .java)经过Java编译器编译后,会生成字节码文件(扩展名为 .class)。这是Java程序运行的基础,因为JVM(Java虚拟机)执行的是字节码。 2. ...

    JAVA课程总复习.ppt

    JAVA课程总复习.ppt

    Java语言程序设计基础第十版第十二章课后复习题答案

    根据提供的信息,我们可以总结出以下关于《Java语言程序设计基础第十版》第十二...以上是对《Java语言程序设计基础第十版》第十二章中部分复习题答案的详细解释,希望能帮助读者更好地理解Java中的异常处理及相关概念。

    Java语言程序设计基础课后复习题答案第十三章

    Java 语言程序设计基础课后复习题答案第十三章 本部分内容将详细讲解 Java 语言程序设计基础课后复习题答案第十三章中的知识点。 一、Java 基础知识 1.1 在 Java 中,什么是可变长参数?答:在 Java 中,使用可变...

    北大青鸟 S1 java总复习资料

    【北大青鸟S1 Java总复习资料】是针对北大青鸟1期学员的全面Java学习总结,涵盖了多个项目和复习题目的答案,旨在帮助学员巩固和深化Java编程的知识。这份资料的重要性在于它提供了实践和理论相结合的学习材料,有助...

    java复习题库 计算机认证考试

    【Java复习题库知识点详解】 Java是一种面向对象的高级编程语言,它的主要特点包括:面向对象、跨平台、高性能和丰富的类库。在Java中,程序的基本单位是类,而不是文件,因此选项B描述错误。Java语言区分大小写,...

    JAVA理论知识基础复习

    JAVA理论知识基础复习 JAVA理论知识基础复习是指对JAVA语言的基础知识进行复习和总结,本文将涵盖构造方法、new关键字、方法的重载、特殊变量this、static定义常量、继承、方法的重写、特殊变量super、多态性等相关...

    在达内学习java的笔记

    13. **Java复习第十三天**:最后可能会讲解一些高级话题,如集合框架的高级特性和并发库(如ConcurrentHashMap、ExecutorService)的使用,或者JVM内存模型和垃圾回收机制。 通过这些复习笔记,读者可以逐步建立起...

    Java语言程序设计第10版(基础篇)复习题答案

    《Java语言程序设计第10版(基础篇)》是一本深入浅出的Java编程教材,旨在帮助初学者掌握这门强大的面向对象编程语言。复习题答案提供了对每一章节核心概念的检验和巩固,帮助读者确认对每个主题的理解是否到位。...

    java基础复习

    ### Java基础复习知识点详解 #### 一、Java语言特点 - **高级编程语言**:Java是一种面向对象的高级编程语言,具有以下特点: - **简单性**:语法简洁,易于学习。 - **结构中立**:独立于硬件结构,能够在各种...

    java语言程序与数据结构梁勇第十版第6章复习题答案

    梁勇老师的《数据结构》第十版第六章涵盖了数组、链表、栈和队列等核心概念,这些知识点对于初学者来说是必须要掌握的。本复习题答案旨在帮助初学者巩固并深化对这些基础知识的理解。 1. **数组**: 数组是Java中...

    java复习文档

    根据提供的文件信息,我们可以整理出以下关键的Java知识点: ### 1. 访问修饰符 public, private, protected, default - **public**: 公有访问级别,可以在任何地方被访问。 - **protected**: 受保护访问级别,...

    北师珠信院Java期末考试复习题.zip

    Java编程语言是信息技术学院学生的重要学习内容之一,尤其在期末阶段,复习题的掌握对于考试成绩至关重要。"北师珠信院Java期末考试复习题.zip"这个压缩包包含了从ch01到ch18的章节练习,覆盖了Java语言的各个方面,...

    第一学期java复习.doc

    Java基础知识总结 一、 Java基础知识 Java是一种高速、安全、可靠的编程语言,用于开发大型商业应用程序。Java语言的设计目标是“Write Once, Run Anywhere”,即一次编写,到处运行。 二、 变量、数据类型和...

    JAVA复习题库.pdf

    第十一部分:Java 语言的内存管理 1. Java 语言的内存管理是指 JVM 中的垃圾回收机制。 2. 内存管理可以避免内存泄露和溢出。 第十二部分:Java 语言的跨平台 1. Java 语言的跨平台是指 Java 语言可以在不同的...

Global site tag (gtag.js) - Google Analytics