网络编程篇(B站黑马程序员笔记)

一、网络编程

在网络通信协议下,不同计算机上运行的程序可以进行数据传输

二、计算机网络

分布在不同地域的计算机, 通过硬件等网络设备使用通信线路互相连接形成的一个网格系统, 可以很方便的进行信息的传递, 资源的共享

三、网络编程三要素

1、IP地址(别名为域名)
设备在网络中的地址,是唯一标识

127.0.0.1 :回送地址,可以代表本机IP

IP常见分类为:IPv4、IPv6
IPv4:32bit(4字节) 点分十进制表示法
IPv6:128bit(8组) 冒分16进制表示法(特殊情况:某组前面有0可省略,全是0就只写一个0,若中间连续组都是一个0,则采用0位压缩表示法,即xxxx::xxxx)

ipconfig:查看本机IP地址
ping IP地址:查看网络是否连通

2、端口号
与ip地址很相似, IP地址是计算机在网络中的唯一标识
端口号是应用程序在设备中的唯一标识
端口号的范围 0-65535 之间 (使用时,应尽量避免0-1023之间的端口号, 因为已经被一些知名的软件和windows操作系统所占用了)
一个端口号只能被一个应用程序使用

3、协议
数据在网络中传输的规则,常见的协议有UDP和TCP
是计算机与计算机之间交流的标准 .
是对数据的传输速率,传入接口,步骤控制出错控制等等制定的一套标准

四、网络编程程序分类

1.B/S 程序 : 浏览器与服务器程序
2.C/S 程序 : 客户端与服务器程序

五、TCP协议

传输控制协议
TCP协议是面向连接的,可靠的,基于字节流的通信协议,速度慢没有大小限制,数据安全
从一台计算机的软件中, 将数据发送到另一台计算机的软件中的过程
七层网络模型:应用层 /表现层 /会话层 /传输层 /网络层 /数据链路层 /物理层

六、TCP程序的C/S协议

需要使用到两个类, 来编写TCP协议的 CS程序 .
1.ServerSocket 搭建服务器
2.Socket 搭建客户端
两方使用socket(套接字 , 通信端点) 进行交流

七、三次握手和四次挥手

三次握手
来源:B站黑马程序员

四次挥手
在这里插入图片描述

八、UDP协议

用户数据报协议
UDP是面向无连接通信协议,速度快,一次最多发送64K,数据不安全,易丢失
与tcp协议不同,UDP的连接是不可信的. 数据发送的成功与失败 与数据报是无关的

InetAddress :此类表示Internet协议(IP)地址
InetAddress 这个类的对象, 用于描述IP .
得到InetAddress对象的方式:
InetAddress add = InetAddress.getByName(“192.168.102.228(主机名或IP地址)”)
在这里插入图片描述

九、UDP通信程序

发送端
在这里插入图片描述
接收端
在这里插入图片描述

由于UDP是面向无连接通信协议,因此因先运行接收端。
如果接收端在启动之后没有接收到数据,那么它会死等(阻塞)

接收数据的时候可以调用一下getLength()方法,表示接收了多少字节(消除因创建1024个字节所产生的空格)
在这里插入图片描述

UDP的三种通讯方式:
单播:一对一
组播(ipv6中称多播):一对多(将接收端放到一组里面)

发送端
与单播一致,区别在于将IP地址改为组播地址
接收端
在这里插入图片描述

广播:一对所有(广播地址:255.255.255.255)
发送端
与单播一致,区别在于将IP地址改为广播地址
接收端
与单播一致

十、ServerSocket

常用构造方法:
ServerSocket(int port); ****
即:ServerSocket server = new ServerSocket(端口号);
创建一个基于TCP/IP协议的服务器 , 并绑定指定的端口号.
注意: 参数port的范围是: 0-65535 (建议1025-65535)
常用方法:
Socket accept(); ****
即:Socket socket = 服务器名.accept();
等待客户端连接 .
此方法会导致线程的阻塞!
直到一个新的客户端连接成功, return Socket对象后, 线程在继续执行.
void close();
释放占用的端口号 , 关闭服务器
在这里插入图片描述

十一、Socket

构造方法:
Socket(String ip,int port) ****
即:Socket socket = new Socket(String ip,int port);
创建一个套接字, 并连接指定ip和端口号的 服务器.
参数1. 服务器的ip地址
参数2. 服务器软件的端口号…

常用方法:

  • OutputStream getOutputStream();
    返回的是 , 指向通信的另一端点的输出流
  • InputStream getInputStream();
    返回的是 , 指向通信的另一端点的输入流
  • void close();
    关闭套接字
    注意:
    在网络编程时, 获取输入输出流的操作 ,对于客户端与服务器来说是相对的
    客户端的输入流, 输入的是服务器的输出流 输出的内容.
    客户端的暑促刘, 输出到了服务器的输入流中.
    所以 在使用时, 需要注意以下一点规则:
    客户端与服务器获取流的顺序必须是相反的
    在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值