网络编程入门(上)
1.网络通信的协议
TCP/IP协议:分为四层应用层,传输层,网络层,链路层.
网络层是TCP/IP协议的核心,主要用于将传输的数据进行分组,将分组数据发送到目标计算机或网络
传输层:使用网络进行通信,可以使用TCP/IP协议,也可以用UDP协议
UDP协议:
2.JDK中的API:
InetAddress:用于封装IP地址的类
常用方法:static InetAddress getByName(String host);//给定主机名确定IP地址
static InetAddress getLocalHost();//返回本地主机
String getHostName();//返回IP地址的主机名
String getHostAddress();//返回IP地址字符串
DatagramPacket封装数据,接收的地址和端口
构造函数
DatagramPacket(byte[]buf,int length)用来接收长度为length的数据包
DatagramPacket(byte[]buf,int length,InetAddress address,int port)
构造数据报包,将长度为length的包发送到指定主机的指定端口
方法:
InetAddress getAddress();//返回发送端IP,接收端使用
int getPort();//返回发送端端口号,拆包时使用
byte[] getData();返回数据缓冲区
int getLength();返回数据的长度
DatagremSocket套接字
用来发送DatagremPacket的对象
构造函数:
DatagremSocket();//用于发送端
DatagremSocket(int port);//接收端的对象,指定端口监听端口
方法:
void receive(DatagremPacket p);//从此套接字接收数据报包
void send(DatagremPacket p);//从此套接字发送数据报包
3.UDP协议:
UDP协议:是无连接通信协议,即传输数据时,发送端和接收端不需要建立逻辑连接
消耗资源小,通信率高,用于音频,视频,视频会议.会丢失一部分数据.
4.TCP协议:
TCP协议:面向连接的通信协议,能保证数据的安全性.即传输数据前,发送端和接收端需要先建立逻辑连接,然后才能传输数据
每次连接的创建都需要经过"三次握手".
第一次握手:客户端向服务端发送连接请求
第二次握手:服务端回送一个响应,通知客户端收到了连接请求
第三次握手:客户端再次向服务端发送确认信息,确认连接