当前位置:网站首页 > Java基础 > 正文

java基础之网络编程



前言必读

读者手册(必读)_云边的快乐猫的博客-CSDN博客

一、1网络通信的基本模式分为两种

1.CS模式(Client---客户端,Server---服务端) 

客户端是需要程序员去开发的,例如日常使用的各种的APP,服务端就是服务器。

例子:端游,依赖特定的PC端才能玩。

2.BS模式(Browser---浏览器,Server---服务端)---重点学习

服务端是需要程序员去开发的。浏览器就是我们日常使用的浏览器去访问各种网站,只要有浏览器就可以访问,不依赖特定的PC端,在任意设备上都可以访问网站服务器 。

例子:网页小游戏,联网浏览器就可以玩。 

一、2 请分析C/S和B/S架构相比的各自的优缺点?

1.CS(客户端--服务器结构)

优点 技术成熟,交互性强,网络通信量低,响应数据快。将任务分到了两端,降低了系统的开销。客户端要处理大多数的业务逻辑和UI展示。他是胖客户端。

缺点:更新太快,要求用户有相同的操作系统,如果有不同的操作系统还要开发不同的版本,对于计算机电脑的配置要求也高

2。BS(浏览器-服务器结构)

优点:主要事务在服务端实现。分布性强、维护方便、开发简单

共享性强、总体成本低,对客户端的电脑配置要求较低

缺点:数据安全性问题,对服务器要求高。数据传输速度较慢,软件的个性化明显降低,难以实现传统模式下的特殊功能要求,他是瘦客户端,大量的数据的传输都要通过服务器与浏览器进行交互,通信开销大,难以实现复杂的应用构造

二、实现网络编程的三种要素

IP地址可以理解为具体哪个计算机,端口理解计算机上的程序(一个程序一个端口),协议理解为电脑通过什么方式和外界交互

要素一:IP地址:设备在网络中的地址,是唯一的标识

详解:

(1)常见的IP分类为:

IPv4(32比特4字节)和IPv6(128位16个字节)--称号--可以标记地球上的每一粒沙子。

(2)IP地址的取经之路:

计算机:我要去找百度获取数据。

DNS服务器:发过来我看看哪个网址域名啊,给你指路具体的ip地址

计算机:知道了这个ip地址,我就可以去找具体要访问的服务器了

服务器:计算机老弟你来找我了啊,那我把你要的数据发给你吧。 

(3)公网地址和私有地址(局域网使用)

192.168开头的就是常见的私有地址 

(4)获取IP地址的代码

 要去实现这个IP地址的获取就要用到 InetAddress方法

代码例子:

 

运行结果:

涉及到个人隐私就不放到这里来了,可以自己运行试试看  

 =========================================================================

要素二:端口:应用程序在设备中的唯一标识

一个主机设备中,端口号是唯一的

(1)端口号:一个程序一个端口号,被规定为16位的二进制,范围是0~65535

(2)周知端口:0~1023,被预先定义的知名应用占用。(例如:HTTP占用80端口,FTP占用21端口)

(3)注册端口:1024~49151,分配给用户进程或某些程序(例如:Tomcat占用8080端口)

(4)动态端口:49152~65535,不固定分配到某种进程,动态分配

 =========================================================================

要素三:协议:数据在网络中的传输协议,最常见的有UDP和TCP(重点)

(1)TCP协议: (安全,有连接确认可靠)

使用TCP协议,双方必须先建立连接,它是一种面向连接可靠通信协议,传输前,要建立三次握手方式建立连接确认。连接和发送数据都需要确认。传输完成后,还需要释放已连接的通信,通信效率相对比较低。

使用场景:对安全需求较高的文件下载、金融数据通信等。

三次握手连接:

客户端:在吗?

服务端:在

客户端:上号

四次握手断开连接:

客户端:不玩了

服务端:好吧

服务端:下次什么时候玩?

客户端:有空再玩 

例子:

一收一发

发送端(客户端) 

 

 接收端 (服务端)

 

 运行结果:

/127.0.0.1:60316说了:大哥,我来了

 ==============客户端启动===============

多收多发 

发送端(客户端) 

 

  接收端 (服务端)

 

运行结果:

服务端启动成功
/192.168.78.1:56384上线了
/192.168.78.1:56384说大哥
/192.168.78.1:56389上线了
/192.168.78.1:56389说小弟
/192.168.78.1:56384说
/192.168.78.1:56384说大哥11

客户端启动
请输入:
大哥
请输入:
收到了消息大哥
收到了消息小弟

大哥11
请输入:
请输入:
收到了消息
收到了消息大哥11

客户端启动
请输入:
小弟
请输入:
收到了消息小弟
收到了消息
收到了消息大哥11 

 =========================================================================

                                                            TCP和UDP的分界线

 =========================================================================

(2)UDP协议:(速度快,无连接,不可靠)

不需要建立连接(因为把数据源IP、目的地IP、端口封装成数据包),每个数据包在64KB内,只管发,不管对方有没有接到确认什么的。

优点:可以广播发送,发送数据结束时无需释放资源,开销小,速度快。

使用场景:语言通话、视频通话等。

ps:这个就是一股脑的什么都封装一起,直接往外抛就什么都不管了,当然快了。

例子:

一收一发

发送端(客户端)

 

接收端 (服务端)

 

运行结果:

========客户端启动============ 

多收多发

思想:把一收一发代码拿来改进就好了

发送端:把主要发送的代码写入死循环并写一个键盘输入代码,只有用户输入exit才能退出循环。

接收端:把等待接收的封装包开始写入死循环里面,然后再把释放资源的代码注释掉才能一直接收

发送端(客户端ÿjava基础之网络编程09;

 

接收端 (服务端)

 

运行结果: 

========客户端启动============
请输入:
你在吗
请输入:
在干嘛
请输入: 

=========接收端启动===============
接收到了来自:(隐私不展示)对方端口是:(隐私不展示)你在吗
接收到了来自:(隐私不展示)对方端口是:(隐私不展示)在干嘛

多开客户端 步骤

一台主机中可以创建很多个客户端给接收端发消息 

 1.在客户端的页面右上角点击

2.找到Allow multiple instances勾选完成

 广播(当前主机和所在网络中的所有主机通信)

步骤:(前提在同一网段内)

发送端的参数地址指定为255.255.255.255,并且指定端口:例如6666

接收端的参数端口只要匹配成功就可以了,例如:6666

例子:

发送端

 

 接收端

 

组播 (当前主机和所在网络中的一组主机通信)

发送端和接收端都要用MulticastSocket绑定同一个IP地址和绑定同一个端口

范围:224.0.0.0~~~~239.255.255.255

发送端

 

接收端

版权声明


相关文章:

  • 2017黑马java基础视频2024-10-24 14:34:06
  • 零基础java代码审计2024-10-24 14:34:06
  • java基础教程学了什么用2024-10-24 14:34:06
  • java基础视频 黑马 笔记2024-10-24 14:34:06
  • java基础类库称为2024-10-24 14:34:06
  • 零基础学java怎么样2024-10-24 14:34:06
  • 了解java基础框架2024-10-24 14:34:06
  • java基础班毕业找工作月薪多少2024-10-24 14:34:06
  • java函数式编程基础2024-10-24 14:34:06
  • java类的基础2024-10-24 14:34:06