JAVA基础知识总结:二十
一、网络编程基础
1.概念
所谓计算机网络,就是把分布在不同区域的计算机与专门的外部设备使用通信线路连接成一个规模大,功能比较强的网络系统,从而使得计算机之间可以相互通信,共享资源
所谓的网络编程,在同一个网络中不同的机器之间进行通信
2.计算机之间进行通信的必要条件
ip地址,端口,网络协议
1>ip地址
ip地址其实就是计算机在网络中的地址,是一个32位的二进制数,通常被分为4个8位二进制
一台计算机在网络中的地址,在同一个网段内,ip地址是唯一的
ipv4:由4个字节组成,分为四段
ipv6:由6个字节组成,分为六段
ip地址的分类(5类)
A:保留给政府机构,1.0.0.1~126.255.255.254
B:分配给中型企业,128.0.0.1~191.255.255.254
C:分配给任何需要的个人,192.0.0.1~223.255.255.254
D:用于组播,224 ~ 239
E:用于实验,240~255
127.一般指的是本机的ip,localhost
2>端口
数据的发送和接受都是需要通过端口出入机器的,在同一台机器上,两个不同的程序不能占用同一个端口,端口号的范围:0~65535
a.公认端口:0~1023
b.注册端口:1025~49151
c.动态或私有端口:1024~65535
3>网络协议
需要通信的设备之间要实现相同的通信协议,才能进行相互通信
网络分层:物理层,数据链路层 ,网络层,传输层,会话层,表示层,应用层
传输层协议:TCP\UDP
应用层协议:HTTP(是一个被动的协议,只有客户端主动给服务端发送请求的时候,服务端才会给客户端响应)
环信 融云
3.InetAddress类
在java中,使用InetAddress类来代表ip地址,是对ip地址的抽取和封装,有两个子类:Inet4Address,Inet6Address.,分别是ipv4和ipv6的抽象
Java中涉及到网络的类基本都存在于java.net包下
4.使用UDP实现数据的接受和发送
UDP:是一个面向无连接的,效率高的,但是相对不安全的通信协议
UDP传输的数据是封装到数据报包中进行的,该协议并不能保证数据能够正确的到达目的地
涉及的类:
Socket:实现数据的接受和发送,又被称为套接字,是两台机器之间进行通信的端口
DatagramSocket:用来表示发送和接收数据报包的套接字,在这个类上总是启用UDP进行数据发送
DatagramPacket:数据报包,用来将指定长度的包接收或者发送到指定主机上的指定端口号上
5.使用TCP实现数据的接受和发送
TCP:面向连接的,安全的,基于字节流的传输层通信协议,但是效率没有UDP高
面向连接:需要在通信的两个机器之间建立通信
使用经典的三次握手建立连接
a.客户端向服务端发送一个请求
b.服务端收到请求之后,回客户端一个响应
c.当客户端收到服务端的响应之后,回服务端一个确认信息
总结:使用TCP实现数据的发送和接收需要有发送方和接收方
涉及到的类
Socket:此类实现客户端套接字
ServerSocket:此类实现服务器套接字
a.客户端发送消息,服务端接收消息
b.客户端发送消息,服务端回复消息
c.客户端上传文件到服务端(图片)
d.客户端从服务端下载文件(图片)
JAVA基础知识总结:二十的更多相关文章
- Java基础学习笔记二十八 管家婆综合项目
本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添 ...
- java基础知识(二)-----多态和构造函数
一:前言 最近由于面试了新浪公司,面试官问我的问题我都不知道,觉得自己好菜,所以最近决定再把java基础给搞一遍,真的觉得自己好菜.每天看一点,那个家伙说<java编程思想>最少要看三遍, ...
- JAVA基础知识总结:十二
一.String类 字符串是一种特殊的对象,一旦被初始化就不能被改变了 字符串常量存储于常量池中 二.StringBuffer类 是一个字符串缓冲区,相当于一个容器 特点 a.可以对字符串进行增加和删 ...
- JAVA基础知识总结:十
一.抽象类 1.定义 当多个类中出现相同功能,但是功能主体是不同的,这是可以进行向上抽取的,只抽取功能的定义部分,使用抽象类实现 抽象类的存在就是为了被继承 2.使用 abstract 3.抽象类的特 ...
- Java基础知识(二)
一.基本概念 1. Java程序初始化的顺序是怎么样的 2. Java和C++的区别 3. 反射 先看一个知乎回答 什么是反射 主要用途 获得Class对象 4. 注解 什么是注解 为什么要用注解 基 ...
- Java 基础知识总结 (二、基本数据类型)
二.基本数据类型 java基本数据类型只能先声明后使用 boolean true/false char 16-bit unicode character byte 8-bit integer sho ...
- Java基础学习笔记二十六 JDBC
什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,J ...
- JAVA基础知识总结:十九
一.多线程使用过程中的临界资源问题 1.临界资源:被多个线程同时访问的资源 临界资源产生的原因:有多个线程同时访问一个资源的时候,如果一个线程在取值的过程中,时间片又被其他的线程抢走了,临界资源问题就 ...
- JAVA基础知识总结:十八
一.进程和线程 1.进程 是一个程序的运行状态和资源占用的描述 进程的特点: a.独立性:不同的进程之间是独立的,相互之间资源不共享 b.动态性:进程在系统中不是静止不动的,而是一直活动的 c.并发性 ...
- JAVA基础知识总结:十五
一.Set接口 Set集合不允许包含相同的元素,如果试图将两个相同的元素添加到一个集合中,使用add方法,添加失败,返回false 1.HashSet HashSet是Set集合的一个实现类,大多数情 ...
随机推荐
- 【专家坐堂Q&A】在 petalinux-config 中选择外部来源时,可将符号链路添加内核来源目录树
问题描述 作为 petalinux-config 菜单的一部分,现在可以将 Linux 内核指定为外部来源. 如果选择了该选项,可为内核来源目录树添加两个符号链路. 这会带来两个问题: 1. 符号链路 ...
- python&django 常见问题及解决方法
0.python-dev安装(ubuntu) apt-get install python-dev 1.Open(filename,mode) 报错实例: f = open('d:\Users\16 ...
- ODAC(V9.5.15) 学习笔记(三)TOraSession(4)
4. 数据库信息 名称 类型 说明 GetDatabaseNames 获取对应的数据库对象名称列表 GetSequenceNames GetStoredProcNames GetTableNames ...
- Python3基础 dict 创建字典 空字典
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- debian下如何源码安装tmux
一.源码安装ncurses库 1.1 获取源码 wget https://invisible-island.net/datafiles/release/ncurses.tar.gz tar xvf n ...
- 作为非计算机专业的学生,觉得 C 语言远比其他语言易于上手,正常吗?
作者:invalid s链接:https://www.zhihu.com/question/26659552/answer/615531516来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...
- CodeForces 509C Sums of Digits(贪心乱搞)题解
题意:a是严格递增数列,bi是ai每一位的和,告诉你b1~bn,问你怎样搞才能让an最小 思路:让ai刚好大于ai-1弄出来的an最小.所以直接模拟贪心,如果当前位和前一个数的当前位一样并且后面还能生 ...
- 操作系统04_IO管理
输入输出系统 IO系统的层次结构 用户层IO软件 设备独立性软件 设备驱动程序 中断处理程序 对IO设备的控制方式 使用轮询的可编程IO方式 cpu不停地检查设备的状态,以字节为单位,非中断方式,利用 ...
- SpringBoot JDBC 源码分析之——NamedParameterJdbcTemplate 查询数据返回bean对象
1,NamedParameterJdbcTemplate 查询列表 /***测试***/ public void queyBeanTest(){ String s = "select * f ...
- Unity3D学习笔记(三十):Lua
Lua:是一个轻量级的脚本语句.不需要编译,直接运行的语言. 环境配置: 执行Lua有两种方式: 1.交互式编程(输入后能立即看到效果) 2.脚本式编程:运行lua文件,.lua为文件后缀 ...