/* 通信的流程: 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(); } }