Java网络基础
本来主要是讲自己在网络编程方面的学习总结,里面主要讲计算网络的基础、TCP的通信协议,还有些简单的案例。下面是我学习的一个简单路线,
一、概述
计算机网络是将不同地理位置的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。在Java语言当中,为计算网络提供了很多支持,通过很多类和接口可以很方便的进行通信和交流。
二、网络编程入门
2.1 软件结构
1、B\S结构:全称为Browser/Server结构,指客户端和服务器结构。常见的程序有微信,QQ等软件。
2、C\S结构:全称为Client/Server结构,指客户端和服务器结构。常见程序有QQ。迅雷等软件。
2.2 网络通信协议
通过计算机网络可以使多台计算机实现连接,位于同一个网络种的计算机在进行连接和通信时需要遵守一定的规则,这就好比每个学生在学校里要遵守校规校法一样,在计算机网络当中,这些连接和通信的规则被称为网络通信协议,他对数据的传输格式,传输效率,传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换
2.3 TCP/IP协议
传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocol),是Internet最基本,最广泛的协议。他定义了计算机如何连入因特网,以及数据如何在他们之间的传输标准。他的内部包含一系列的用于处理数据通信的协议,并采用了4层的分层模型,每一层都呼叫他的下一层所提供的协议来完成自己的需求
2.4 协议分类
1、UDP:用户数据报协议(User Datagram Protocol)。UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接,简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确定接收端是否存在,就会发出数据,同样接收端在收到数据市,也不会向发送端反馈是否收到数据
2、TCP:传输控制协议(Transmission Control Protocol)。TCP协议是面向连接协议,即传输数据之前,在发送端和接收端建立连接,然后在传输数据,他提供了两台计算机之间的安全可靠的数据传输,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接时必须要明确客户端和服务器,由客户端向服务器发出连接请求,每次连接的创建都要经过“三次握手”。
2.5 网络编程的三要素
1、第一次握手,客户端向服务器发送连接请求,等待服务器确定
2、第二次握手,服务器向客户端回送一个连接响应,通知客户端收到了连接请求
3、第三次握手,客户端再次向服务器发送确定信息,确认连接
三、TCP的通信程序
3.1 概述
1、TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分客户端(Client)与服务器(Server)。当两个程序需要通信时,他们可以通过Socket类创建的套接字对象并连在一起(端口号和IP地址的组合得到一个网络套接字)。
2、通信步骤:服务器需要事先启动,等待客户端的连接。客户端主动连接服务器端,连接成功才能通信,服务器不能主动连接客户端。
3、在Java程序当中,实现TCP通信程序。客户端:java.net.Socket类表示。创建Socket对象,向服务器请求连接,服务器响应请求,两者进行连接,开始通信。服务器:java.net.ServerSocket类表示,创建ServerSocket对象,相当于开启了一个服务区,并等待客户端连接。
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1",8888);
//创建Socket对象
}
}3.2 ServerSocket类
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8888);
//创建ServerSocket套接字对象
Socket socket = server.accept();
//返回一个和客户端相连接的Socket对象
}
}3.3 网络通信程序
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1",8888);
//创建Socket对象
OutputStream os = socket.getOutputStream();
//获得输出流,向服务器发送信息
os.write("请求服务的的连接".getBytes());
//向服务器发送请求连接
InputStream is = socket.getInputStream();
//获取输入流,从服务器读取信息
byte[] bytes = new byte[1024];
int len = is.read(bytes);
System.out.println(new String(bytes,0,len));
os.close();
is.close();
socket.close();
}
} public class Server {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8888);
//创建ServerSocket套接字对象
Socket socket = server.accept();
//返回一个和客户端相连接的Socket对象
InputStream is = socket.getInputStream();
//创建输入流从客户端读取信息
byte[] bytes = new byte[1024];
int len = is.read(bytes);
System.out.println(new String(bytes,0,len));
//打印信息
OutputStream os = socket.getOutputStream();
os.write("允许连接".getBytes());
os.close();
is.close();
socket.close();
server.close();
}
}
2.4 协议分类
1、UDP:用户数据报协议(User Datagram Protocol)。UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接,简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确定接收端是否存在,就会发出数据,同样接收端在收到数据市,也不会向发送端反馈是否收到数据
2、TCP:传输控制协议(Transmission Control Protocol)。TCP协议是面向连接协议,即传输数据之前,在发送端和接收端建立连接,然后在传输数据,他提供了两台计算机之间的安全可靠的数据传输,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接时必须要明确客户端和服务器,由客户端向服务器发出连接请求,每次连接的创建都要经过“三次握手”。
2.5 网络编程的三要素
1、第一次握手,客户端向服务器发送连接请求,等待服务器确定
2、第二次握手,服务器向客户端回送一个连接响应,通知客户端收到了连接请求
3、第三次握手,客户端再次向服务器发送确定信息,确认连接
Java网络基础的更多相关文章
- java网络基础知识的简述
TCP/UDP的介绍 TCP协议:面向连接的,字节流无差错地传输协议. UDP协议:一个不可靠的无连接的数据传输协议. 说明:TCP可以想象成电话通讯,双方在通话时必须建立连接,一方没听清,会要求对方 ...
- Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
本文转载 https://www.javadoop.com 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.c ...
- Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
本文转自:http://www.sohu.com/a/203838233_827544 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 ht ...
- Java网络编程与NIO详解2:JAVA NIO 一步步构建IO多路复用的请求模型
本文转载自:https://github.com/jasonGeng88/blog 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 http ...
- java 网络编程(三)---TCP的基础级示例
下面是TCP java网络编程的基础示例: tcp传输:客户端建立过程的思路:1.创建TCP客户端的Socket服务,使用的是socket对象,建议在创建的过程中,就明确了目的地和要连接的主机2.如果 ...
- JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)
本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...
- Java 网络编程(一) 网络基础知识
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951826.html 网络基础知识 网络编程的目的:直接或间接地通过网络协议与其他计算机 ...
- Java网络编程基础(Netty预备知识)
今天在家休息,闲来无事,写篇博客,陶冶下情操~~~ =================我是分割线================ 最近在重新学习Java网络编程基础,以便后续进行Netty的学习. 整 ...
- java网络爬虫基础学习(三)
尝试直接请求URL获取资源 豆瓣电影 https://movie.douban.com/explore#!type=movie&tag=%E7%83%AD%E9%97%A8&sort= ...
随机推荐
- [leetcode712]202. Happy Number判断快乐数字
题目很简单,就是用哈希表存,判断有没有重复 学到了:java中字符串的比较有两种: 1.==这种是比较引用,只用两个字符串变量指向同一个地址才相等 2..equals()这种是值的比较,只要两个字符串 ...
- Mapreduce实例--二次排序
前言部分: 在Map阶段,使用job.setInputFormatClass定义的InputFormat将输入的数据集分割成小数据块splites,同时InputFormat提供一个RecordRed ...
- python在线练习
不管学习那门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行. 这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从中选择自 ...
- 手摸手带你用Hexo撸博客(三)之添加评论系统
原文地址 注: 笔者采用的是butterfly主题, 主题内置集成评论系统 butterfly主题开启评论 开启评论需要在comments-use中填写你需要的评论. 以Valine为例 commen ...
- SAP中的F4帮助
今天在调试标准程序的时候,意外的发现了一个F4帮助的函数,感觉还是挺好用的. F4IF_FIELD_VALUE_REQUEST从函数名就可以看出是给字段添加F4帮助的. F4 help for fie ...
- 如何用Python中自带的Pandas和NumPy库进行数据清洗
一.概况 1.数据清洗到底是在清洗些什么? 通常来说,你所获取到的原始数据不能直接用来分析,因为它们会有各种各样的问题,如包含无效信息,列名不规范.格式不一致,存在重复值,缺失值,异常值等..... ...
- 特征预处理之归一化&标准化
写在前面 这篇博客的主要内容 应用MinMaxScaler实现对特征数据进行归一化 应用StandardScaler实现对特征数据进行标准化 特征预处理 定义 通过一些转换函数将特征数据转换成更加 ...
- Java基础复习2
三目运算符 语法:条件判断?表达式1:表达式2; 如果条件判断成立则获取值1否则获取值2 public class demo1{ public static void main(String[ ...
- mysqldumpslow基本使用
参数解释 -s, 是表示按照何种方式排序 c: 访问计数 l: 锁定时间 r: 返回记录 t: 查询时间 al:平均锁定时间 ar:平均返回记录数 at:平均查询时间 -t, 是top n的意思,即为 ...
- TSP旅行商问题
求解的问题,burma.tsp里面的内容 1 16.47 96.10 2 16.47 94.44 3 20.09 92.54 4 22.39 93.37 5 25.23 97.24 6 22.00 9 ...