java--网络编程UDP传输

SendTest :

package udp;


import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;


public class SendTest {


public static void main(String[] args) {
/*
* TCP与UDP的区别
* UDP:不可靠的 不需要连接的网络协议,限制数据的大小
* TCP:可靠 需要网络连接的协议,不限制数据的大小
* 都是以字节的形式传输或接受数据
*/
try {
/*
* DatagramSocket:只负责发送或接受数据
* 自定义端口号
*/

//定义一个端口号为1234快递员
DatagramSocket dgs = new DatagramSocket(1234);
// String str = "今天天气很冷,多穿点";
byte[] b = "今天天气很冷,多穿点".getBytes();//将字符串转换为字节存放到字节数组中
/*
* DatagramPacket:此类表示数据报包
* b:字节数组
* b.length:获取数组的长度
* InetAddress.getByName(IP地址):定义目的主机的IP地址
* 5555:port端口号
*/
//DatagramPacket起投递作用,可以比做邮递员
//把字节数组b和b中存放的元素的长度等目标信息和目标端口号“放进袋子中”
DatagramPacket dgp = new DatagramPacket(b, b.length, InetAddress.getByName("127.0.0.1"), 5555);
dgs.send(dgp);//端口号为1234快递员发送






byte[] by = new byte[1024];
DatagramPacket ddp = new DatagramPacket(by,by.length);//获取by字节数组,并且获得by中存放的元素的长度
dgs.receive(ddp);//端口号为1234快递员    接受 发送方发送的数据

String str = new String(ddp.getData(),0,ddp.getLength());
System.out.println(str);




byte[] bye="you are welcome".getBytes();
DatagramPacket dp=new DatagramPacket(bye, bye.length,InetAddress.getByName("127.0.0.1"),5555);
dgs.send(dp);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}


}

RecTest:

package udp;


import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;


public class RecTest {


public static void main(String[] args) {
try {
//定义一个端口号为5555快递员
DatagramSocket dgs = new DatagramSocket(5555);
byte[] bt = new byte[1024];
//定义数据报包的容器大小      已经存放在bt字节数组中
//把字节数组bt和bt中存放的元素的长度“放进袋子中”
DatagramPacket dgp = new DatagramPacket(bt, bt.length);//获取bt字节数组,并且获得bt中存放的元素的长度
dgs.receive(dgp);//端口号为5555快递员    接受 发送方发送的数据



/*
* 因为数据的传输或接受都是以字节的形式传递,所以需要将字节转换字符串
* dgp.getData():获取数据报包中的数组,此方法返回的类型为byte[]
* 0:索引  数组的索引是0开始,0代表的为第一位
* dgp.getLength():获取字节数组的长度

* 也可以定义bt,0,bt.length:获取的为定义的字节数组的长度(1024),浪费资源
*/
String str = new String(dgp.getData(), 0, dgp.getLength());
System.out.println(str);







byte[] by = "好的,谢谢".getBytes();
//把字节数组by和by中存放的元素的长度等目标信息和目标端口号“放进袋子中”
DatagramPacket ddp = new DatagramPacket(by, by.length, InetAddress.getByName("127.0.0.1"), 1234);
dgs.send(ddp);//端口号为5555快递员发送




byte[] bye=new byte[1024];
DatagramPacket dp=new DatagramPacket(bye, bye.length);
dgs.receive(dp);
String str233=new String(dp.getData(),0,dp.getLength());
System.out.println(str233);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值