1.网络基础
网络之间的连接是必须遵守相应的协议,网络协议是分层的,同层间可以通信,上层可以调用下一层,而通信协议规定,用户的应用程序是最高层,物理通信最为最底层,我们就只管和最高层之间通信,这样就编程方便许多,不用涉及底层代码,而其他层之间的通信内部有人去实现,我们不必太关注这方面。分层有一定标准,并非胡乱分层:
理解:应用层即我们编写的程序层,传输层就是TCP和UDP层,我们就和传输层打交道,网络层就是IP层,物理+数据链路层是最底层。
IP:IP协议是网络层的主要协议,支持网间互联的数据报通信,它的最大好处是提供了独一无二的ip。其主要功能是无连接数据报传送、数据报路由选择和差错控制。
ip地址本身占了四个字节,每个字节的最大是255,有点ip是真实ip,有的是虚拟ip,公网必须是真实的,而我们笔记本的ip其实是虚拟ip。网络分三类:
TCP和UDP协议:
TCP协议:是专门设计用于在不可靠的因特网上提供可靠的、端到端的字节流通信的协议,它是一种面向连接的协议,有三次握手协议,即一个请求必须有一个返回,所以安全性较高,同时效率较低。
UDP协议:UDP向应用程序提供了一种发送封装的原始IP数据报的方法、发送时不需要建立连接,是一种不可靠的连接,即请求之后无需响应,直接开始下一个请求。但是它的效率很高。
1.TCP socket网络编程
两个java应用程序之间可以通过一个双向的网络通信连接实现数据交换,这个双向链路的一端称为一个socket。
java中需要的包在java.net,建立连接是需要远程计算机的IP地址和端口号(port),每一个地址有65536个端口。
代码:
首先建立一个类,作为服务器端,
import java.net.*
public class TCPServer {
public static void main(String[] args) throws Exception{
//启动一个服务器,并且指定端口号
ServerSocket ss = new ServerSocket (“6666”);
//接收客户端的连接请求,在循环内表示无限接收,不止一个
while(true){
Socket s = ss.accept();
}
}
}
建立一个客户端,
import java.net.*
public class TCPClient {
public static void main(String[] args) throws Exception{
//连接请求
Socket s = new Socket (“127.0.0.1”,“6666”);
}
}
3.UDP socket网络编程
UDP是不需要建立连接的,所以直接将请求发送就行,
客户端: