Java SE基础之网络编程

Java SE基础之网络编程

1基础知识点

1.1网络通信协议

通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这就 好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据的传输格式、传输速率、传输步骤等做了 统一规定,通信双方必须同时遵守,最终完成数据交换。

1.1.1HTTP协议

HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。
java原生支持的最高协议,基于文本,可在任何端口中使用,通常为80端口
URL类:支持http://,file://,https://形式的URL**
HTTP请求方法
GET,POST.HEAD,PUT,DELETE,OPTIONS,TRACE
GET:只能取回文档,不能执行其他任何副作用
HEAD和 GET一样但是不返回主体,如果程序只想检查URL对应的网页是否有变化,可以使用HEAD
POST:把数据发送给服务器处理

1.1.2TCP(传输控制协议)

TCP(Transmission Control Protocol)互联网可靠传输网络数据的基础,确保传输的网页和其他互联网流量完整且易于理解基于连接:数据属于单个逻辑流
保证传送:如果未收到数据包,会一直重新发送,知道送达为止
错误检查:能检测到网络传输导致的损坏,并自动修复、
双向通信通道,使用特殊的编号机制(TCP序号)为数据指定序号,确保通信流的两端保持同步

TCP协议的三次握手
  • 第一次握手,客户端向服务器端发出连接请求,等待服务器确认。

  • 第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求

  • 第三次握手,客户端再次向服务器端发送确认信息,确认连接。整个交互过程

    在这里插入图片描述

1.1.3UDP(用户数据报协议)

UDP(User Datagram Protocol)。协议是一个面向无连接的协议。传输数据时,不需 要建立连接,不管对方端服务是否启动,直接将数据、数据源和目的地都封装在数据包中,直接发送。每个 数据包的大小限制在64k以内。它是不可靠协议,因为无连接,所以传输速度快,但是容易丢失数据。日常应 用中,例如视频会议、QQ聊天等

1.4IP

传输数据的最低层标准,抽象了把字节从A设备到B设备的物理网络技术
ip数据包并不一定保证一定送达,任何过载的系统都可能会丢掉数据包,ip数据包有目的地,但一般没有路由数据——真正传输数据是沿线的物理传输介质,可能有多种不同的介质

1.5端口号

如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程
端口号:用两个字节表示的整数,它的取值范围是065535。其中,01023之间的端口号用于一些知名的网 络服务和应用,普通的应用程序需要使用1024以上的端口号。如果端口号被另外一个服务或应用所占用,会 导致当前程序启动失败

利用 协议 + IP地址 + 端口号(网络编程三要素) 三元组合,就可以标识网络中的进程了,那么进程间的通信就可以利用这个标识与其 它进程进行交互。

1.6TCP/IP协议

传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol),是 Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它 的内部包含一系列的用于处理数据通信的协议,并采用了4层的分层模型,每一层都呼叫它的下一层所提供的 协议来完成自己的需求**
在这里插入图片描述

1.7软件结构

C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。
B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等

2 TCP具体编程实现

2.1TCP通信程序

TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务端(Server)

2.1.1实现步骤

*1. 服务端程序,需要事先启动,等待客户端的连接。

  • 客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。*
2.1.2Java TCP网络通信支持类
  • 客户端: java.net.Socket 类表示。创建 Socket 对象,向服务端发出连接请求,服务端响应请求,两者建 立连接开始通信。
  • 服务端: java.net.ServerSocket 类表示。创建 ServerSocket 对象,相当于开启一个服务,并等待客户端 的连接

2.2 Socket类

2.2.1编程基础
套接字

将应用程序同端口连接起来,是一个假想的连接装置

构造方法

public Socket(String host, int port) :创建套接字对象并将其连接到指定主机上的指定端口号。如果指 定的host是null ,则相当于指定地址为回送地址。
回送地址:主要用于网络软件测试以及本 地机进程间通信,无论什么程序,一旦使用回送地址发送数据,立即返回,不进行任何网络传输。

Socket client = new Socket(“127.0.0.1”, 6666);

成员方法

public InputStream getInputStream() : 返回此套接字的输入流。
如果此Scoket具有相关联的通道,则生成的InputStream 的所有操作也关联该通道。 关闭生成的InputStream也将关闭相关的Socket。
public OutputStream getOutputStream() : 返回此套接字的输出流。 如果此Scoket具有相关联的通道,则生成的OutputStream 的所有操作也关联该通道。 关闭生成的OutputStream也将关闭相关的Socket。
public void close() :关闭此套接字。 一旦一个socket被关闭,它不可再使用。 关闭此socket也将关闭相关的InputStream和OutputStream 。
public void shutdownOutput() : 禁用此套接字的输出流。 任何先前写出的数据将被发送,随后终止输出流。

2.3 Socket类

2.3.1编程基础

ServerSocket 类:这个类实现了服务器套接字,该对象等待通过网络的请求

2.3.2 构造方法

public ServerSocket(int port) :使用该构造方法在创建ServerSocket对象时,就可以将其绑定到一个指 定的端口号上,参数port就是端口号。
ServerSocket server = new ServerSocket(6666);

2.3.3 成员方法

public Socket accept() :侦听并接受连接,返回一个新的Socket对象,用于和客户端实现通信。该方法 会一直阻塞直到建立连接。

2.4 简单TCP网络程序

2.4.1TCP通信图解

1. 【服务端】启动,创建ServerSocket对象,等待连接。
Socket client = new Socket(“127.0.0.1”, 6666);
ServerSocket server = new ServerSocket(6666);
2. 【客户端】启动,创建Socket对象,请求连接。
3. 【服务端】接收连接,调用accept方法,并返回一个Socket对象。
4. 【客户端】Socket对象,获取OutputStream,向服务端写出数据
5. 【服务端】Scoket对象,获取InputStream,读取客户端发送的数据。

到此,客户端向服务端发送数据成功。
在这里插入图片描述
自此,服务端向客户端回写数据。
6. 【服务端】Socket对象,获取OutputStream,向客户端回写数据。
7. 【客户端】Scoket对象,获取InputStream,解析回写数据。
8. 【客户端】释放资源,断开连接

2.4.2 具体实现代码

客户端实现 socket
在这里插入图片描述
服务器端实现 socketServer
在这里插入图片描述

2.5 简单案例

2.5.1文件上传案例
  1. 【客户端】输入流,从硬盘读取文件数据到程序中。
  2. 【客户端】输出流,写出文件数据到服务端。
  3. 【服务端】输入流,读取文件数据到服务端程序。
  4. 【服务端】输出流,写出文件数据到服务器硬盘中。
    在这里插入图片描述
基本实现

客户端实现
在这里插入图片描述
服务器端实现
在这里插入图片描述

3 UDP具体编程实现

3.1UDP通信程序

常规的UDP编程需要创建DatagramSocket,绑定自身的IP和端口,然后创建DatagramPacket去发送和接收数据

很久不写了,,,,,,,待我复习归来…

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值