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集合的一个实现类,大多数情 ...
随机推荐
- netty支持的各种socketchannel实现及比较
性能上从低到高如下: OioSocketChannel:传统,阻塞式编程. NioSocketChannel:select/poll或者epoll,jdk 7之后linux下会自动选择epoll. E ...
- Python之字符编码(一)
一.了解字符编码的知识储备? 1.计算机基础知识? 计算机中所有的软件文件(包括:操作系统)都存储在硬盘,启动计算机,计算机需要把系统文件都去到内存中. 2.文本编辑器存取文件的原理(nodepad+ ...
- Kali系列之aircrack-ng wifi密码穷举
kali linux安全渗透 网卡:rtl8187 工具aircrack-ng 操作+ 查看无线网卡信息 ifconfig 或者 iwconfig 有个是wlan0的就是您的外置无线网卡 启动网卡监听 ...
- Mysql 用命令行导出导入数据方法
方法一: 导出参考:https://www.cnblogs.com/activiti/p/6700044.html 用mysqldump可以导出整个数据库里的表和数据,不单单是只导出某个表的数据 命令 ...
- python之udp
import socket s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.bind(('127.0.0.1',8888)) while T ...
- topcoder srm 495 div1
problem1 link 从前向后确定一下,然后再从后向前确定一下.一样的话就是可以确定的. problem2 link 首先将强连通分量缩点.理论上来说,只需要遍历所有入度为0的联通块中的一个即可 ...
- Delphi XE5 for Android (八)
delphi xe5 编译的程序在启动时会有短暂的黑屏出现,这个现象产生是因为启动首个activity时会加载一些初始化数据,整个时间大约在2~3秒,如何处理? 网上有些资料,这里主要参考和整理了CS ...
- C#趋势图(highcharts插件)
<!--图表效果展现--> <div class="TUI-layout-center" style="overflow: auto;" id ...
- Linux驱动开发调试 -- 打开dev_dbg()【转】
本文转载自:https://blog.csdn.net/kunkliu/article/details/78048618 转载地址:http://blog.chinaunix.net/uid-2284 ...
- 二进制枚举例题|poj1222,poj3279,poj1753
poj1222,poj3279,poj1753 听说还有 POJ1681-画家问题 POJ1166-拨钟问题 POJ1054-讨厌的青蛙