一、网络编程
在网络通信协议下,不同计算机上运行的程序可以进行数据传输
二、计算机网络
分布在不同地域的计算机, 通过硬件等网络设备使用通信线路互相连接形成的一个网格系统, 可以很方便的进行信息的传递, 资源的共享
三、网络编程三要素
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(套接字 , 通信端点) 进行交流
七、三次握手和四次挥手
三次握手
四次挥手
八、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();
关闭套接字
注意:
在网络编程时, 获取输入输出流的操作 ,对于客户端与服务器来说是相对的
客户端的输入流, 输入的是服务器的输出流 输出的内容.
客户端的暑促刘, 输出到了服务器的输入流中.
所以 在使用时, 需要注意以下一点规则:
客户端与服务器获取流的顺序必须是相反的