一、网络编程基础
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基础知识总结:二十的更多相关文章

  1. Java基础学习笔记二十八 管家婆综合项目

    本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添 ...

  2. java基础知识(二)-----多态和构造函数

    一:前言 最近由于面试了新浪公司,面试官问我的问题我都不知道,觉得自己好菜,所以最近决定再把java基础给搞一遍,真的觉得自己好菜.每天看一点,那个家伙说<java编程思想>最少要看三遍, ...

  3. JAVA基础知识总结:十二

    一.String类 字符串是一种特殊的对象,一旦被初始化就不能被改变了 字符串常量存储于常量池中 二.StringBuffer类 是一个字符串缓冲区,相当于一个容器 特点 a.可以对字符串进行增加和删 ...

  4. JAVA基础知识总结:十

    一.抽象类 1.定义 当多个类中出现相同功能,但是功能主体是不同的,这是可以进行向上抽取的,只抽取功能的定义部分,使用抽象类实现 抽象类的存在就是为了被继承 2.使用 abstract 3.抽象类的特 ...

  5. Java基础知识(二)

    一.基本概念 1. Java程序初始化的顺序是怎么样的 2. Java和C++的区别 3. 反射 先看一个知乎回答 什么是反射 主要用途 获得Class对象 4. 注解 什么是注解 为什么要用注解 基 ...

  6. Java 基础知识总结 (二、基本数据类型)

    二.基本数据类型 java基本数据类型只能先声明后使用 boolean  true/false char 16-bit unicode character byte 8-bit integer sho ...

  7. Java基础学习笔记二十六 JDBC

    什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,J ...

  8. JAVA基础知识总结:十九

    一.多线程使用过程中的临界资源问题 1.临界资源:被多个线程同时访问的资源 临界资源产生的原因:有多个线程同时访问一个资源的时候,如果一个线程在取值的过程中,时间片又被其他的线程抢走了,临界资源问题就 ...

  9. JAVA基础知识总结:十八

    一.进程和线程 1.进程 是一个程序的运行状态和资源占用的描述 进程的特点: a.独立性:不同的进程之间是独立的,相互之间资源不共享 b.动态性:进程在系统中不是静止不动的,而是一直活动的 c.并发性 ...

  10. JAVA基础知识总结:十五

    一.Set接口 Set集合不允许包含相同的元素,如果试图将两个相同的元素添加到一个集合中,使用add方法,添加失败,返回false 1.HashSet HashSet是Set集合的一个实现类,大多数情 ...

随机推荐

  1. P1357 花园

    洛咕原题 题解 状压dp+矩乘 首先看到题目说M<=5,这么小的数据明显可以用状压保存相邻状态,于是可以得到一个80分的dp: 先筛出所有可用的状态,然后建立一个矩阵保存可转移的状态,再然后把每 ...

  2. eclipse maven Errors while generating javadoc on java8

    With JDK 8, we are unable to get Javadoc unless your tool meets the standards of doclint. Some of it ...

  3. vs2015 dx15开发教程一

  4. 一条命令,根据进程名判断有进程输出up,无进程无输出

    这个研究了好一会, 由于开发需要,提供的命令. shell命令,可以按照分号分割,也可以按照换行符分割.如果想一行写入多个命令,可以通过“';”分割. a=`ps -ef | grep nginx | ...

  5. tf.nn.max_pool

    tf.nn.max_pool(value, ksize, strides, padding, name=None)   参数是四个,和卷积很类似: Args Annotation 第一个参数value ...

  6. hdu 4366 Successor - CDQ分治 - 线段树 - 树分块

    Sean owns a company and he is the BOSS.The other Staff has one Superior.every staff has a loyalty an ...

  7. 写了个脚本将json换成md

    用python 脚本将protocol.json中的json按照templete.md模版生成,结果在protocol.md中 Python: #!/usr/bin/python # -*- codi ...

  8. TI 多模雷达1843毫米波雷达做自动泊车(用了8个雷达)

    http://e2e.ti.com/blogs_/b/behind_the_wheel/archive/2019/01/09/how-mmwave-sensors-enable-autonomous- ...

  9. Golang模拟客户端POST表单功能文件上传

    客户端通过multipart.Write把文件的文本流写入一个缓存中,然后调用http的Post方法把缓存传到服务器. package main import ( "bytes" ...

  10. cumtoj 一起来选课

    一起来选课 题目地址:http://192.168.173.163/JudgeOnline/problem.php?cid=1019&pid=7 题目 明泽私立大学有n门课程提供给大一的同学来 ...