网络编程Java文件并在基于p4的mininet中实现

实验要求

在本次实验中,我将通过java的网络编程实现在基于p4的mininet上主机的tcp交互,网络拓扑就用最基本的basic.p4对应的那个拓扑 

网络编程Java文件并在基于p4的mininet中实现_第1张图片

实验内容

Step1:安装一下java

        虚拟机里面没装java,我只能先装一下了,版本是java11,因为听说这个版本比较稳定    网络编程Java文件并在基于p4的mininet中实现_第2张图片

Step2:使用java网络编程(因为我不会python网络编程)写一个发送端和一个接收端(基于TCP的)

发送端,定了一个端口10086,弄了一个字符缓冲流套了一个字符流里面再套一个字节流,这个字节流我直接用系统in这个字节流对象好了。发886断开连接

public class TCPsender {
    public static void main(String[] args) throws IOException {

        int port = 10086;
        Socket socket = new Socket("10.0.3.3",port);
        OutputStream outputStream = socket.getOutputStream();

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String line;
        while ((line = br.readLine())!=null){
            byte[] bytes = line.getBytes(StandardCharsets.UTF_8);
            outputStream.write(bytes,0,bytes.length);
            if(line.equals("886"))
                break;
        }

        socket.close();
    }
}

接收端

public class TCPreceiver {
    public static void main(String[] args) throws IOException {
        ServerSocket ss = new ServerSocket(10086);

        Socket socket = ss.accept();

        InputStream inputStream = socket.getInputStream();

        byte[] bytes = new byte[1024];

        while (true){
            int len = inputStream.read(bytes);
            String data = new String(bytes,0,len);
            System.out.println("收到了一个数据是:"+data);
            if(data.equals("886"))
                break;
        }
        ss.close();
    }
}

Step3:开始我的小实验

make run以后我进入了mininet指令行,打开h1和h3两个终端和抓包器,我这里就抓s2-eth1把,因为它是h3的网关。

首先,我先不开服务器,让发送端发一下数据,可以看到被拒绝了

网络编程Java文件并在基于p4的mininet中实现_第3张图片

现在开了一下服务器再开发送端,可以明显的看到三次握手

网络编程Java文件并在基于p4的mininet中实现_第4张图片

 我发送点数据吧

 

网络编程Java文件并在基于p4的mininet中实现_第5张图片

小结 

今天只是我的一个小demo,以后可能涉及复杂的网络传输以及包头分析的情形,我就套这个模板

你可能感兴趣的:(Level.4,SDN实验,网络)