mirror of
https://gitee.com/willfree/min-dev-java.git
synced 2026-06-18 03:40:25 +08:00
173 lines
6.0 KiB
Java
173 lines
6.0 KiB
Java
package logicface;
|
|
|
|
import component.ComponentException;
|
|
import component.Identifier;
|
|
import encoding.*;
|
|
import mgmt.MgmtException;
|
|
import org.junit.Test;
|
|
import packet.Interest;
|
|
import packet.MINPacket;
|
|
import packet.PacketException;
|
|
import util.ByteHelper;
|
|
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.OutputStream;
|
|
import java.net.*;
|
|
import java.util.Arrays;
|
|
|
|
/*
|
|
* @Author: Wang Feng
|
|
* @Description:
|
|
* @Version: 1.0.0
|
|
* @Date: 16:26 2021/5/10
|
|
* @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室
|
|
*/
|
|
public class LogicFaceTest {
|
|
/**
|
|
* 测试初始化&UDP发包
|
|
*/
|
|
@Test
|
|
public void testIniUdp() throws LogicFaceException, ComponentException {
|
|
Interest interest=new Interest();
|
|
interest.ttl.setTtl(Long.MAX_VALUE);
|
|
byte[] value={(byte)132,(byte)221,(byte)223,(byte)25};
|
|
interest.payload.setValue(value);
|
|
interest.congestionMark.setCongestionLevel(Long.MAX_VALUE);
|
|
Identifier name=new Identifier("/pkusz/wefree");
|
|
interest.setName(name);
|
|
|
|
LogicFace face=new LogicFace();
|
|
face.initWithUdp("127.0.0.1",50000);
|
|
face.sendInterest(interest);
|
|
}
|
|
|
|
/**
|
|
* 测试初始化&TCP发包
|
|
*/
|
|
@Test
|
|
public void testIniTcp() throws LogicFaceException, ComponentException {
|
|
Interest interest=new Interest();
|
|
interest.ttl.setTtl(Long.MAX_VALUE);
|
|
byte[] value={(byte)132,(byte)221,(byte)223,(byte)25};
|
|
interest.payload.setValue(value);
|
|
interest.congestionMark.setCongestionLevel(Long.MAX_VALUE);
|
|
Identifier name=new Identifier("/pkusz/wefree");
|
|
interest.setName(name);
|
|
|
|
LogicFace face=new LogicFace();
|
|
face.initWithTcp("127.0.0.1",60000);
|
|
face.sendInterest(interest);
|
|
}
|
|
|
|
@Test
|
|
public void testReceiveInterestByTcp() throws ComponentException, LogicFaceException, EncoderException, BlockException, MgmtException, PacketException {
|
|
Interest interest=new Interest();
|
|
interest.ttl.setTtl(Long.MAX_VALUE);
|
|
byte[] value={(byte)132,(byte)221,(byte)223,(byte)25};
|
|
interest.payload.setValue(value);
|
|
interest.congestionMark.setCongestionLevel(Long.MAX_VALUE);
|
|
Identifier name=new Identifier("/pkusz/wefree");
|
|
interest.setName(name);
|
|
|
|
LogicFace face=new LogicFace();
|
|
face.initWithTcp("127.0.0.1",60000);
|
|
face.sendInterest(interest);
|
|
|
|
// 等待两秒钟,接收兴趣包
|
|
try {
|
|
Interest newInterest = face.receiveInterest(-1);
|
|
System.out.println(Arrays.toString(
|
|
new SelfEncodingBase().selfWireEncode(newInterest).getRaw()));
|
|
}catch (Exception e){
|
|
System.out.println("超时未收到数据:"+e.getLocalizedMessage());
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void testReceiveMinPacketByTcp() throws ComponentException, LogicFaceException, EncoderException, BlockException, MgmtException, PacketException {
|
|
// MINPacket minPacket=new MINPacket();
|
|
// minPacket.packetType=new VlInt(TLV.TlvPacketMINCommon);
|
|
//// minPacket
|
|
//
|
|
// LogicFace face=new LogicFace();
|
|
// face.initWithTcp("127.0.0.1",60000);
|
|
// face.sendInterest(interest);
|
|
//
|
|
// // 等待两秒钟,接收兴趣包
|
|
// try {
|
|
// Interest newInterest = face.receiveInterest(-1);
|
|
// System.out.println(Arrays.toString(
|
|
// new SelfEncodingBase().selfWireEncode(newInterest).getRaw()));
|
|
// }catch (Exception e){
|
|
// System.out.println("超时未收到数据:"+e.getMessage());
|
|
// }
|
|
}
|
|
|
|
/**
|
|
* 开启一个tcp服务器,端口号为60000
|
|
*/
|
|
@Test
|
|
public void startTCPServer() {
|
|
ServerSocket socket = null;
|
|
OutputStream outputStream = null;
|
|
try {
|
|
//建立基站
|
|
socket = new ServerSocket(60000);
|
|
//开始开启接收模式,接到后返回客户端的socket对象
|
|
Socket client = socket.accept();
|
|
|
|
byte[] bytes = new byte[1500];
|
|
|
|
// 循环接收数据,并打印
|
|
InputStream inputStream = client.getInputStream();
|
|
int len = inputStream.read(bytes);
|
|
// inputStream.close();
|
|
System.out.println(Arrays.toString(ByteHelper.getLenBytes(bytes, 0, len)));
|
|
|
|
//获取向客户端发送消息的对象流
|
|
outputStream = client.getOutputStream();
|
|
//向客户端写数据
|
|
outputStream.write(ByteHelper.getLenBytes(bytes, 0, len));
|
|
System.out.println("writed to client: "+Arrays.toString(ByteHelper.getLenBytes(bytes, 0, len)));
|
|
|
|
Thread.sleep(20000);
|
|
inputStream.close();
|
|
outputStream.close();
|
|
socket.close();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 创建一个UDPServer,从而打印出来udp face发送的数据。端口号为50000
|
|
* 测试结果:
|
|
* [-15, 0, -6, 25, -52, 4, 4, 5, 6, 7, -15, 0, -5, 15, -15, 0, -4, 1, 1, -15, 0, -3, 1, 1, -15, 0, -2, 1, 0]
|
|
*/
|
|
// @Test
|
|
public void startUDPServer() throws IOException {
|
|
//1.创建服务端+端口
|
|
DatagramSocket server = new DatagramSocket(50000);
|
|
//2.准备接受容器
|
|
byte[] container = new byte[1024];
|
|
//3.封装成包
|
|
DatagramPacket packet = new DatagramPacket(container, container.length);
|
|
while(true){
|
|
//4.接受数据
|
|
server.receive(packet);
|
|
//5.分析数据
|
|
byte[] data = packet.getData();
|
|
int len = packet.getLength();
|
|
System.out.println("server receive:" +
|
|
Arrays.toString(ByteHelper.getLenBytes(data, 0, len)));
|
|
SocketAddress remoteHost=packet.getSocketAddress();
|
|
System.out.println("remote host: "+packet.getSocketAddress());
|
|
server.connect(remoteHost);
|
|
server.send(packet);
|
|
}
|
|
//6.释放
|
|
// server.close();
|
|
}
|
|
}
|