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集合的一个实现类,大多数情 ...
随机推荐
- shell脚本一键安装jdk
直接上shell #!/bin/bash #offline jdk install ipath="/usr/local" installpath=$(cd `dirname $0` ...
- 批处理:根据进程名称查询进程,如果有进程就输出up没有就输出donw
需求:windows系统上 根据进程名称查询进程,如果有进程就输出 up ,没有就输出 donw. ::Final interpretation is owned by chenglee ::@e ...
- AnswerOpenCV(1001-1007)一周佳作欣赏
外国不过十一,所以利用十一假期,看看他们都在干什么. 一.小白问题 http://answers.opencv.org/question/199987/contour-single-blob-with ...
- 20155201 网络攻防技术 实验八 Web基础
20155201 网络攻防技术 实验八 Web基础 一.实践内容 Web前端HTML,能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. We ...
- Codeforces 750E New Year and Old Subsequence - 线段树 - 动态规划
A string t is called nice if a string "2017" occurs in t as a subsequence but a string &qu ...
- linux 压缩工具
gzip gunzip zcat bzip2 bunzip2 bzcat xz unxz xzcat a: gzip 用法 # gzip file 压缩文件 不会保留源文件 直接生成 file.g ...
- Sublime Text3--安装使用教程资料整理
Sublime Text快捷键: Ctrl + ←/→进行逐词移动,相应的,Ctrl + Shift + ←/→进行逐词选择. Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中 ...
- <Python>判断变量是否是DataFrame 或者 Series
https://stackoverflow.com/questions/14808945/check-if-variable-is-dataframe Use the built-in isinsta ...
- 【bzoj1706】[usaco2007 Nov]relays 奶牛接力跑
题意 给出一张无向图,求出恰巧经过n条边的最短路. 题解 考虑先离散化,那么点的个数只会有202个最多.于是复杂度里面就可以有一个\(n^3\).考虑构造矩阵\(d^1\)表示经过一条边的最短路,那么 ...
- Spring Boot 2 入门
Spring Boot其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 参考网上资料,一路踩了几个坑,终于搞出了 ...