/*
通信的流程:
1、找到对方IP;
2、数据要发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序进行标识,为了方便程序,称为端口,逻辑端口。
3、定义一个通讯规则,这个通讯规则称为协议。即TCP/IP协议。数字0-65535。(mysql默认:3306。tomcat默认:80)
OSI参考模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。通过各层对数据进行封装
UDP:面向无连接,接收方没有数据就丢失
1、将数据及源和目的封装成数据包中,不需要建立连接,
2、每个数据的大小控制在64k内
3、因无连接,是不可靠协议。
4、不需要建立连接,速度快
TCP:
1、建立连接,形成传输数据的通道
2、在连接中进行大数据量的传输。
3、通过三次完成连接,安全
4、必须建立连接,效率低
Socket:
1、就是为网络服务提哦功能的一种机制,
2、通讯两端都有Socket.
3、网络通讯的实质就是Socket的通讯。
4、数据在两个Socket之间通过IO传输。
*/
/*
通过UDP传输方式,发送一段文字:
1、先建立Udpsocket服务。
2、提供数据,并将数据封装到数据包中
3、通过socket的发送功能,将数据包发送出去。
4、关闭资源。
*/
import java.net.*;
import java.lang.Exception;
class UdpSendDemo
{
public static void main(String[] args) throws Exception
{
//建立udp服务,通过DatagramSocket建立对象,定义一个端口
DatagramSocket ds = new DatagramSocket(1000);
//确定数据,并封装成数据包,DatagramPacket(byte[] buf,int length,InetAddress,int port);参数依次:内容、长度、IP、端口号
byte [] buf = "welcom to china".getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.254"),10000);
//通过Socket服务,将已有数据发送出去
ds.send(dp);
//关闭资源
}
}
/*
用于接收并处理数据的接收端
定义接收端的时候,通常会监听一个端口,其实就是制定接收方定义一个ip数字标识,供交互
思路:
1、定义upd的服务。
2、定义一个数据包,存储接收到的字节数据,因为数据包中有方法可以提取数据包中的信息。
3、通过Socket服务的receive方法将接收得到的数据存入已定义好的数据包中。
4、通过数据包对象的特有功能,将这些数据取出,打印在控制台上。
5、关闭资源。
*/
class UdpReceive
{
public static void main(String []args) throws Exception
{
//创建udp的服务,要制定一个端口,保持和发送方一致
DatagramSocket ds =new DatagramSocket(1000);
//定义数据包,用于存储数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//通过服务的receive方法,将接收到额数据存入到数据包中。
ds.receive(dp);
//通过数据包中的方法获取数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port =dp.getPort();
System.out.println(ip + ".." + data + ".." + port);
//关闭资源
ds.close();
}
}