最后更新:2022-07-17 18:47:00 手机定位技术交流文章
目录
为什么需要网络编程
什么是网络编程
传输层的两个重要协议
索克是什么
分类
Java UDP协议
Java使用TCP协议
两个协议的对比
为什么网络编程? —— 丰富的网络资源用户在浏览器中,打开在线视频网站,如优酷看视频,实质是通过网络,在网络上获取视频资源。类似于本地打开视频文件,只是这个资源的来源是网络。与当地资源相比,网络提供了更丰富的网络资源:![]()
所谓的网络资源 ,其实就是在网络中可以获取的各种数据资源。 而所有的网络资源,都是通过网络编程来进行数据传输的
什么是网络编程网络编程指网络上的主机,通过 不同的进程 ,以编程的方式实现 网络通信(或网络数据传输) 。![]()
- 当然,我们只要满足 进程 不同的同时;所以即使同一主机,只要它是一个不同的进程,基于网络传输数据,也属于网络编程。
- 特殊的,对于开发来说,在条件有限的情况下,一般也都是在一个主机中运行多个进程来完成网络编程。 但是,我们一定要明确,我们的目的是提供网络上不同主机,基于网络来传输数据资源:
- 进程 A 获取网络资源的编程
- 进程 B 提供网络资源的编程
- 一般意义上的网络通信从应用层的角度讨论,因此一般意义上的网络编程主要讨论在传输层
传输层的两个重要协议
- UDP User Datagram Protocol 用户报文协议 UDP没有做任何处理,保存网络的原生态,是不可靠,无连接,面向数据报文的一种协议
- TCP Transmission Control Protocol 传输控制协议 可靠,有连接,面向字节流的一种协议
- 所有这些都是传输层协议,要求实现进程到进程的通信,所有这些都是应用层的视角
网络层协议是IP协议
如何设置网络(逻辑)通讯线
发送端和接收端在网络数据传输中:
- 发送端 :数据的 发送方进程 ,称为传送器。 发送端主是网络通信中的源主。
- 接收端 :数据的 接收方进程 这个叫做接收机,接收机是网络通信中的目标主机。
- 收发端 发射器和接收器的两端也称为接收器和发射器。
注:发送者和接收者是相对的,只有一个网络数据传输产生数据流的观念。请求和响应一般来说,获取网络资源需要两个网络数据传输:
- 首先:发送请求数据
- 第二: 发送响应数据.
客户端和服务端
- 服务端 在一般网络数据传输场景下,使用 提供服务 另一方面, 称为服务端的进程可以提供外部服务.
- 客户端 : 获取服务 另一方面, 这个过程被称为客户.
对于服务来说
- 一般提供:客户访问服务资源
- 客户端在服务端存储资源
好比在银行办事:
- 银行提供存款服务:用户(客户)在银行(服务端)储存资源(现金)
- 银行提供退款服务:客户(客户)获得服务终结资源(银行为客户持有的现金)
概念Socket 接口是基于网络通信系统提供的一种技术 TCP/IP 协议的网络通信的基本操作单元。 基于索克接口的网络程序的开发是网络编程
分类
流套接字 :使用传输层 TCP 协议
- 有连接
- 可靠传输
- 面向字节流
- 有接收缓冲器和发送缓冲器
- 大小不限
对于节点流,很容易理解传输数据是基于 IO 流动数据的特点是: IO 如果流不是关闭,则它是无限的数据,可以多次发送,并且可以单独多次接收。数据报套接字 :使用传输层 UDP 协议
- 无连接
- 不可靠传输
- 面向数据报
- 接收缓冲区而不发送缓冲区
限制大小:最大传输一次 64k对于数据报来说,可以简单的理解为,传输数据是一块一块的,发送一块数据假如 100 一个字符串必须一次发送,一个接收必须一次接收 个字节,而不能分 100 次,每次接收 1 个字节Java数据报告包字符通信模型对于一次发送及接收 UDP 数据报的流程如下:
为多个客户提供请求处理和响应,如下:
套接字的创建
DatagramSocket 构造方法
- UDP服务器使用固定端口来便利客户服务端口之间的通信,这可能会导致错误(端口已经被其他进程占用)
- UDP客户端(Client),不需要采用固定端口(可以采用)
DatagramSocket 一些常见的方法
- 一旦在通信的两个方面具有逻辑意义的通信线,两个方面的地位是平等的(谁可以是接收者谁可以是发送者)
- 通信结束后,都需要进进行资源回收
- 对于接收方法,如果没有收到数据消息,则该过程总是被封锁
数据报的创建
- 数据消息是通信过程的数据抽象,被理解为在通信过程中发送/接收信封
- 作为接收器,您只需要提供数据存储的位置
- 作为发送者,您需要发送数据,并向谁发送数据(远程ip+端口)
数据包类的方法
- 为服务器使用,获取客户端IP和端口
- 对于接收者:接收消息的内容,由另一进程发送的应用程序层数据
例子
服务端端的接口建立
- 连接(第一次通话,第一次通话) 未连接接收消息(没有大脑发送,不在对方的场合)
- 因为TCP是有连接的,服务器使用TCP Socket(传入的端口就是要公开的端口,一般称为监听端口)
服务端服务器接口方法
- 服务器的Socket(客户端对象)是通过accept中获取来的,所以客户端Socket对象需要主机手动实例
- 挂电话,谁都可以挂
客户接口建立
- 一旦接口对象被接收,双方都同时接收它(电话同时被切断),双方的状况是等的,仅通过分发发送者和/或接收者
客户端接口方法
- 获取对方的IP地址/getRemote()获取对方的端口
- 输入流:位于过程角度,是一个输入流(对象后面是网络卡,由网络卡抽象的TCP连接),因此它用于接收器
- 输出流:因此它用于发射器
输入和输出流的使用
由于它是基于节点流的,可以使用输入和输出流
本文由 在线网速测试 整理编辑,转载请注明出处。