package 网络编程_187_UDP编程1_原理_练习;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import javax.swing.Spring;
/**
- 2.服务器端
-
a)创建服务端:DatagramSocket类+指定接收端口
-
b)准备接收的容器,字节数组,封装DatagramPacket
-
c)用容器(包)接收数据
-
d)分析数据
-
e)释放资源
*/
public class MyServer {//MyServer服务器
public static void main(String[] args) throws IOException {
//创建服务器端+端口
DatagramSocket server = new DatagramSocket(8888);// server服务器;处理异常
//接收容器
byte[] container = new byte[1024];//container容器
//封装成包
DatagramPacket packer = new DatagramPacket(container , container.length);//packer包装
//接收数据
server.receive(packer); //receive接收;声明异常
//分析数据
byte[] data = packer.getData();
int len = packer.getLength();
System.out.println(new String(data,0,len));
//释放资源
server.close();
}
}
//结果-------------------------------------------------
等待接收
package 网络编程_187_UDP编程1_原理_练习;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.net.SocketException;
/**
- UDP以数据为中心,非面向连接,不安全数据可能丢失,效率高;
*一.在java里面UDP已经封装好了;即类DatagramSocket;在接收和发送数据时需要封装一个包DatagramPacket - 1.客户端
-
a)创建客户端:DatagramSocket类+指定发送端口
-
b)准备数据 ;字节数组,这个字节数组不能太大
-
c)打包及封装:DatagramPacket+服务器地址及端口
-
d)发送
-
e)释放资源
*/
public class MyClient {//MyClient客户端
public static void main(String[] args) throws IOException {
//创建客户端+端口;注意:在同一电脑上这个端口要与服务端不同;否则发生冲突
DatagramSocket client = new DatagramSocket(6666);//client客户端 处理异常
//准备数据
String msg = “UDP编程”;
//转成字节数组
byte[] data = msg.getBytes();//getBytes字符串
//打包(发送的地址及端口);这里地址是服务器
//调用的是这个构造器:DatagramPacket(byte[] buf, int length, InetAddress address, int port)
//构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。这个InetAddress(服务器地址)是没有端口的,
//而 SocketAddress是有端口的,使用new
DatagramPacket packet = new DatagramPacket(
data,data.length,new InetSocketAddress(//Inet网络;无法实例化类型SocketAddress
“localhost”,8888));//packet数据包,localhost本地服务器
//发送
client.send(packet); //声明异常;send发送
//释放
client.close();
}
}
//结果------------------------------------
接收成功