本帖最后由 小石姐姐 于 2018-4-24 19:58 编辑
网络编程笔记
网络编程- 网络让不同的设备连接起来,互相访问
- 网络编程,通过编写的程序来实现不同设备之间的内容传输
- Socket(套接字),一个Socket对象,就相当于定义一个发送,接收的对象(对象内容包括,计算机名,和程序端口)
网络通信的三要素- 传输协议
- 通信的规则
- TCP: 传输控制协议
- 建立链接,形成传输数据通道,进行大数据量传输,
- 三次握手,
- 效率低
- 有重发机制:保证了数据传输的准确性,但因为需要接受方发挥验证信息,所以数据发送时间长,数据流量大.
- 适用场景
- UDP:用户数据报协议
- 没有链接,不可靠,速度快,每个数据报(一个包)限制为最大64K.
- 使用场景:
- 适合实时性要求强的场合,比如网络电话等环境,这种协议延迟很小.还有实时视频通话.
- IP地址:是一个二进制数字.(32位的(IPV4),一个字节8位,就相当于4个字节,限定了IP的范围;(IPV6 ,有16个字节)
- 端口号:
- 物理端口:网卡口
- 逻辑端口.我们学的就是逻辑端口
- 0~65535个端口,前1024个端口号是系统保留端口号,
- 查看端口号:netstat -n;
- 一个网址,http://baidu.com
- http: 传输协议
- baidu.com:IP地址,(通过DNS服务来转换成二进制数字)
- 端口号,网页默认80端口
Java中对IP地址和传输协议都有对应的类来进行操作IP地址对应的类InetAddress- InetAddress类中的成员变量有二进制的IP地址,和主机名
- doc命令:ipconfig,显示主机信息.
- InetAddress类中获取的方法
- String getHostAddress();返回的是IP地址
- String getHostName();返回的是主机名
- InetAddress getLoclaHost();
UDP协议发送数据- DateGramSocket类
- 构造方法
- 无参构造
- 有参构造,输入int类型的port(端口号)
- 这个构造的对象即可以发送也可以接受数据报包(DateGramPacket对象).
- DateGranPacket对象包含的成员变量
- byte[]: 数据
- IP: 设备地址
- port: 进程的地址,端口号.
- 有参构造,包含上边三个成员变量,打包成一个包即DateGranPacket对象.
- 创建发送端Socket对象
- 创建数据并打包
- 发送数据
- 释放资源
使用UDP协议接收数据- 创建接收端Socket对象
- 接收数据
- 解析数据
- 处理数据
- 释放资源
- UDP协议收发数据时的注意事项
- 端口号错误,数据可以正常发出,不会出现异常,但是收不到
- 接收端启动以后,端口号就被绑定了,再启动就会出现异常(java.net.BindException :Address already in use :Cannot bind);
- 解决办法,关闭占用端口的程序,或者换一个端口.
TCP协议发送数据- java.net.Socket类:客户端
- java.net.ServerSocket: TCP服务端.
- 使用TCP协议发送数据
- 创建发送端Socket对象(明确服务端的IP地址和端口号)(创建链接)
- 获取输出流对象
- 发送数据
- 释放资源
- 使用TCP协议接收数据
- 创建接收端对象(ServerSocket类)(明确端口号);
- 监听(也是一种阻塞);
- 获取输入流对象,
- 获取数据
- 处理数据
- 释放资源
|
|