Files
min-dev-java/src/test/java/logicface/LogicFaceTest.java
T
2021-05-12 19:34:05 +08:00

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();
}
}